私のコードがこのように動作している理由がわかりません。基本的に私は倍のx量のためのforループを実行しようとしていますが、私のコードはTimeoutExceptionに言い続けループが実行された後でもセレンのタイムアウト例外が発生する
Traceback (most recent call last):
File "/Users/Ryan/Desktop/selftest1.py", line 33, in <module>
EC.presence_of_element_located((By.ID, "ctl00_lblStockname"))
File "/Library/Python/2.7/site-packages/selenium/webdriver/support/wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
TimeoutException: Message:
そして、私のコードの本体は、次のとおりです。
for x in range(1,10):
baseurl = 'http://www.hkexnews.hk'
url = 'http://www.hkexnews.hk/listedco/listconews/advancedsearch/search_active_main.aspx'
driver = webdriver.Firefox()
driver.get(url)
driver.find_element_by_id("ctl00_txt_stock_code").clear()
driver.find_element_by_id("ctl00_txt_stock_code").send_keys(x)
driver.find_element_by_id("ctl00_rbAfter2006").click()
Select(driver.find_element_by_id("ctl00_sel_DateOfReleaseFrom_y")).select_by_visible_text("1999")
Select(driver.find_element_by_id("ctl00_sel_tier_1")).select_by_visible_text("Financial Statements/ESG Information")
Select(driver.find_element_by_id("ctl00_sel_tier_2")).select_by_visible_text("Annual Report")
driver.find_element_by_css_selector("label > a > img").click()
match = re.compile('\.(html|pdf)')
try:
element = WebDriverWait(driver, 1).until(
EC.presence_of_element_located((By.ID, "ctl00_lblStockname"))
)
finally:
f = driver.page_source
soup = BeautifulSoup(f,'html.parser')
for link in soup.findAll('a'):
try:
href = link['href']
if re.search(match, href):
file = open("newfile.txt", "a")
file.write(baseurl+href+'\n')
file.close
print ('finished write')
print baseurl+href
except KeyError:
pass
driver.quit()
私の理解にタイムアウト例外があることです最初の試みのために投げられた。しかし、それは最終的にヒットするときにループを停止すべきではない?また、私は「してみてください」とタイムアウトエラーのための「最終的には」前後に例外を追加しようとし、それは私が正直にこの問題を解決する方法で失われたのですかに問題を引き起こしているものを私にエラー
error: [Errno 61] Connection refused
を与えました最初の場所。
EDIT:
私はすべてをリセットした後、例外ブロックを再度追加し、それは今も元気に動作しているようです。次のように:
try:
...
except TimeoutException:
driver.quit
finally:
...
誰かが解決策を知りたいと思っている場合だけです。あなたは、ブラウザhttp://selenium-python.readthedocs.io/waits.html
driver.implicitly_wait(10)
にimplicitrly_wait(時間)を設定する必要が
はい、これは正しい出力ですが、複製できません。私はインターネットの速度の違いを推測している、私のページはあなたのネットワークとしてすぐに読み込まれないので、私はページがロードされていることを確認するためにtryブロックを追加します。 – kimpster
@kimpster、このコードを試してください、これがあなたにとってもうまくいくことを願ってください – thebadguy