2016-12-27 93 views
1

我試圖從網站(www.hotpads.com)刮一些財產信息。Python,BeautifulZoup,Selenium webscrape

我正在加載一個包含多個列表的網址(例如link),並嘗試進入每個屬性並獲取更多詳細信息以下載到Excel中。

如果我'檢查'的元素,我可以看到一旦頁面加載後,href鏈接被識別爲'Linker'類,但是如果我使用Selenium加載頁面,請確保它已加載,然後搜索這些鏈接不存在。

我在做什麼錯?你能給我一個指導如何去做這件事。請注意,我正在等待頁面被加載。如果我右鍵點擊並查看鏈接,我可以看到我後來的內容,但是如果我查看頁面源,則鏈接不存在。

在獲取和訪問各個環節而言,這是我的代碼:

driver.get(url) 
time.sleep(10) 

response = requests.get(url) 
html = response.content 

soup = bs4.BeautifulSoup(html, "html.parser") 

data = soup.findAll('a', attrs={'class': 'Linker'}) 
if DEBUG: 
    for d in data: 
     print url_base+d['href'] 

for d in data: 
    if DEBUG: print d 

    #set the link value and open it 
    link = url_base+d['href'] 
    driver.get(link) 

回答

0

以這樣的方式您不能使用Selenium + requestsdriver.get(url)requests.get(url)是兩個不同的GET請求(之間不存在相關性他們)和time.sleep(10)將不會影響response = requests.get(url)。此外,它似乎是目標元素是動態的一些JavaScript產生的,所以你不能用requests.get(url)得到它們,因爲它們不存在於初始HTML代碼

嘗試獲取網頁源代碼如下:

driver.get(url) 
time.sleep(10) 
html = driver.page_source 

soup = bs4.BeautifulSoup(html, "html.parser") 
+0

我是一個白癡。我已經使用二者一起編寫了十幾個腳本,並始終遵循您指定的方法。我使用BeautifulSoup唯一腳本作爲更改的基礎,但未注意到我沒有這樣做。謝謝 – HenryM