2017-07-31 6 views
0

現在、javascriptを使用している不動産ウェブサイトを掻き集めています。私のプロセスは、単一のリストのための多くの異なるhrefリンクを含むリストを掻き集め、これらのリンクを別のリストに追加してから、次のボタンを押して開始します。私は次のボタンがクリックできなくなるまでこれを行う。セレン、美容液、パイソンを使ったウェブスクラブ

私の問題は、すべてのリスティング(〜13000リンク)を収集した後、スクレーパーがリンクを開き、必要な情報を取得する2番目の部分に移動しないということです。 Seleniumは、リンクリストの最初の要素に移動することさえできません。

HERESに私のコード:この後

wait = WebDriverWait(driver, 10) 
while True: 
    try: 
     element = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, 'next'))) 
     html = driver.page_source 
     soup = bs.BeautifulSoup(html,'html.parser') 
     table = soup.find(id = 'search_main_div') 
     classtitle = table.find_all('p', class_= 'title') 
     for aaa in classtitle: 
      hrefsyo = aaa.find('a', href = True) 
      linkstoclick = hrefsyo.get('href') 
      houselinklist.append(linkstoclick) 
     element.click() 
    except: 
     pass 

私は、リストのリストを通過セレンでそれらを開き、そのリスト上のデータを収集し、別の簡単なスクレーパーを持っています。

+0

あなたが削っているリンクはどこですか? – ksai

+0

https://www.28hse.com/en/rent/house-type-g1 – bathtubandatoaster

+0

どのようなエラーがありますか? – ksai

答えて

1

問題はwhile True:は、無限に実行されるループを作成します。 except句にはpassというステートメントがあります。これは、エラーが発生するとループが実行され続けることを意味します。その代わりに、エラーが発生すると、ループがbreak、あなたはちょうどあなたがあなたの上にwhileループとちょうどループをなくすことができ、コード

かの次の行に移動します

wait = WebDriverWait(driver, 10) 
while True: 
    try: 
     element = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, 'next'))) 
     html = driver.page_source 
     soup = bs.BeautifulSoup(html,'html.parser') 
     table = soup.find(id = 'search_main_div') 
     classtitle = table.find_all('p', class_= 'title') 
     for aaa in classtitle: 
      hrefsyo = aaa.find('a', href = True) 
      linkstoclick = hrefsyo.get('href') 
      houselinklist.append(linkstoclick) 
     element.click() 
    except: 
     break # change this to exit loop 

のように記述することができますforループを使用したhrefリンクのリスト

wait = WebDriverWait(driver, 10) 
hrefLinks = ['link1','link2','link3'.....] 
for link in hrefLinks: 
    try: 
     driver.get(link) 
     element = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, 'next'))) 
     html = driver.page_source 
     soup = bs.BeautifulSoup(html,'html.parser') 
     table = soup.find(id = 'search_main_div') 
     classtitle = table.find_all('p', class_= 'title') 
     for aaa in classtitle: 
      hrefsyo = aaa.find('a', href = True) 
      linkstoclick = hrefsyo.get('href') 
      houselinklist.append(linkstoclick) 
     element.click() 
    except: 
     pass #pass on error and move on to next hreflink 
+0

これで問題は解決しますか? – DJK

+0

yup thanks mate – bathtubandatoaster

関連する問題