내 코드가 왜 이렇게 작동하는지 이해할 수없는 문제가 발생했습니다. 기본적으로 나는 시간의 X 금액에 대한 루프를 실행하려고하고 있지만, 내 코드는 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
솔직히이 문제를 해결하는 방법을 분실하고 또는 어떤이의 문제를 일으키는했다 처음.
는 편집 :
나는 모든 것을 리셋 후 예외 블록을 다시 추가하고 지금은 잘 동작하는 것. 다음과 같이 :
try:
...
except TimeoutException:
driver.quit
finally:
...
누구나 해결책을 알고 싶을뿐입니다. 귀하의 시도가-마지막으로 잡을 해달라고 :
예, 원하는 출력이 맞지만 복제 할 수 없습니다. 나는 인터넷 속도의 차이를 추측하고 있습니다. 내 페이지가 네트워크만큼 빨리로드되지 않으므로 페이지가로드되었는지 확인하기 위해 try 블록을 추가하십시오. – kimpster
@kimpster,이 코드를 시도하십시오, 이것이 당신을 위해서도 효과가 있기를 바랍니다. – thebadguy