2016-11-14 1 views
0

내 코드가 왜 이렇게 작동하는지 이해할 수없는 문제가 발생했습니다. 기본적으로 나는 시간의 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: 
    ... 

누구나 해결책을 알고 싶을뿐입니다. 귀하의 시도가-마지막으로 잡을 해달라고 :

답변

0

from selenium import webdriver 
from selenium.webdriver.support.ui import Select 
import re 
from bs4 import BeautifulSoup 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.support.wait import WebDriverWait 
from selenium.webdriver.common.by import By 


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.Chrome() 
    driver.maximize_window() 
    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)') 

    wait = WebDriverWait(driver, 10) 
    wait.until(EC.presence_of_element_located(
      (By.XPATH, '//*[@id="ctl00_lblStockName"]'))) 

    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() 
을 시도하십시오

그것은이 출력을주고있다 :

C:\Python27\python.exe 
C:/XXXX/kimpster.py 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2016/0412/LTN20160412398.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2015/0429/LTN201504291354.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2014/0407/LTN20140407336.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2013/0408/LTN20130408921.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2012/0410/LTN20120410623.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2011/0411/LTN20110411707.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2010/0422/LTN20100422489.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2008/0423/LTN20080423279.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2009/0319/LTN20090319103.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2009/0319/LTN20090319097.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2016/0421/LTN20160421233.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2015/0422/LTN20150422417.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2014/0423/LTN20140423340.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2013/0422/LTN20130422293.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2012/0425/LTN20120425287.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2011/0421/LTN20110421583.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2010/0423/LTN20100423265.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2009/0420/LTN20090420355.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2008/0423/LTN20080423322.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2016/0407/LTN20160407581.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2015/0413/LTN20150413273.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2014/0428/LTN20140428711.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2013/0429/LTN20130429395.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2012/0426/LTN20120426622.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2011/0426/LTN20110426450.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2010/0423/LTN20100423393.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2009/0423/LTN20090423238.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2008/0425/LTN20080425250.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2015/0319/LTN20150319329.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2014/0324/LTN20140324959.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2013/0402/LTN201304021122.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2012/0326/LTN20120326263.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2012/0326/LTN20120326253.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2009/0330/LTN20090330188.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2009/0320/LTN20090320083.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2016/0428/LTN201604281016.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2015/0429/LTN20150429233.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2014/0429/LTN20140429945.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2013/0429/LTN201304291031.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2012/0426/LTN20120426229.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2011/0421/LTN20110421266.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2010/0429/LTN20100429830.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2009/0428/LTN200904281430.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2008/0429/LTN20080429728.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2016/0323/LTN20160323343.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2015/0313/LTN20150313356.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2014/0327/LTN20140327637.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2013/0326/LTN20130326368.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2012/0326/LTN20120326620.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2011/0426/LTN20110426261.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2010/0408/LTN20100408709.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2009/0429/LTN20090429932.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2008/0416/LTN20080416269.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2016/0425/LTN20160425745.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2015/0423/LTN20150423635.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2014/0422/LTN20140422239.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2013/0417/LTN20130417330.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2012/0423/LTN20120423313.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2011/0406/LTN20110406041.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2010/0426/LTN20100426737.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2009/0428/LTN20090428495.pdf 
finished write 
http://www.hkexnews.hk/listedco/listconews/SEHK/2008/0429/LTN20080429825.pdf 

Process finished with exit code 0 

당신은 또한 파일의 작성이 expect.As 어떤이되지 않습니다.

+0

예, 원하는 출력이 맞지만 복제 할 수 없습니다. 나는 인터넷 속도의 차이를 추측하고 있습니다. 내 페이지가 네트워크만큼 빨리로드되지 않으므로 페이지가로드되었는지 확인하기 위해 try 블록을 추가하십시오. – kimpster

+0

@kimpster,이 코드를 시도하십시오, 이것이 당신을 위해서도 효과가 있기를 바랍니다. – thebadguy

0

당신은 브라우저 http://selenium-python.readthedocs.io/waits.html

driver.implicitly_wait(10) 

브라우저가 웹 요소를

PD를 찾기 위해 기다릴 것이다 MAX 시간인가에 implicitrly_wait (시간)을 설정해야 예외가 사용 시도 예외 처리 마침내 내가 코드를 업데이트 한

+0

WebDriverWait의 기능이 이미 수행하지 않았습니까? 왜냐하면 내가 변수 x = 1로 파일에 쓸 때 코드를 실행할 때. 내 이해에서 코드는 새로운 요소가 사용 가능하게 될 때까지 기다린 다음 finally 절에 도착하고 try 및 finally 절을 다음 줄로 나눕니다. – kimpster

관련 문제