2016-12-09 21 views
0

私は異なるWebページでiensと呼ばれるWebサイトをスクラップしようとしています。今、私は1ページをうまく削り取ることができます。Python Selenium - StaleElementReferenceException

これまでの私のコード:

chrome_path = '/Users/username/Downloads/chromedriver' 
driver = webdriver.Chrome(chrome_path) 
url = 'https://www.iens.nl/restaurant' 
pageExt = '#page=' 
restaurantList = [] 
cityList = ['utrecht'] 

def scrape(pageNumber): 
    driver.get(url + '+' + cityList[0] + pageExt + str(pageNumber)) 
    items = driver.find_elements_by_class_name("resultItem- 
    information") 
    for item in items: 
     restaurantList.append(item.text) 
    return restaurantList 

print scrape(14) 

は、これは私が必要とする結果が得られます。私はこのような複数のページこすりしたいときしかし:

print scrape(12) 
print scrape(14) 

を私は、ウェブページ12上のデータのための正しい結果を得るが、その代わりとしてだけでなく、ウェブページ14の結果を得て、私は次のエラーメッセージが表示されます

selenium.common.exceptions.StaleElementReferenceException: Message: 
stale element reference: element is not attached to the page document 

ページは、あなたが私を助けることができる

https://www.iens.nl/restaurant+utrechtと呼ばれていますか?

ありがとうございます!

答えて

0

この問題は、ページごとにランダムに1回しか再生されないようです。このコードを試して、期待どおりに動作するかどうか教えてください:

import time 

def scrape(pageNumber): 
    driver.get(url + '+' + cityList[0] + pageExt + str(pageNumber)) 
    time.sleep(1) 
    items = driver.find_elements_by_class_name("resultItem-information") 
    for item in items: 
     restaurantList.append(item.text) 
+0

私はもはやエラーにはなりません。最初の行は正しいですが、2番目の "scrape(number)"は、最初のスクレイプと同じ行をrestaurantListに追加します。だからrestaurantLine = [最初のページからの結果、最初のページからの結果] – titusAdam

+0

範囲10まで使用すると、ページ2,4,6にbtwがありません! – titusAdam

+0

何らかの理由でページが 'driver.get'の後でランダムにリフレッシュされる可能性があるので、私は1秒間待機します。これは今働くようです – Andersson

関連する問題