2017-11-11 177 views
0

我在網站上做過網頁抓取。它只在頁面中取得前20個元素。如果我們向下滾動,其餘元素將被加載。如何刮這些元素呢?有沒有什麼不同的方法來做到這一點?BeautifulSoup僅識別頁面中的幾個元素

import requests 
from bs4 import BeautifulSoup 

r=requests.get("https://www.century21.com/real-estate/rock-spring-ga/LCGAROCKSPRING/") 
c=r.content 
c 

soup=BeautifulSoup(c,"html5lib") 
soup 

all=soup.find_all("div",{"class":"property-card-primary-info"}) 
len(all) 

它只給出20個。不是全部。如何刮掉隱藏的元素呢?

+0

元素似乎滾動動作之後被加載,則可能需要另一種工具來提取它們。 – PRMoureu

+0

什麼樣的工具? –

+0

selenium可以工作,https://stackoverflow.com/questions/14583560/selenium-retrieve-data-that-loads-while-scrolling-down – PRMoureu

回答

1

使用硒向下滾動,然後你可以刮的內容其他

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

browser = webdriver.Chrome(executable_path=os.path.join(os.getcwd(),'chromedriver')) 
browser.get(link) 

body = browser.find_element_by_tag_name("body") 

no_of_pagedowns = 2 #Enter number of pages that you would like to scroll here 

while no_of_pagedowns: 
    body.send_keys(Keys.PAGE_DOWN) 
    no_of_pagedowns-=1 
1

有兩種不同的方法。

第一個: 通過檢索站點後面的數據API來使用網絡抓取。您需要了解滾動後爲網站帶來的新信息。 要了解這一點,請在網絡區域中打開瀏覽器開發工具(Chrome中的F12),並觀察滾動後正在調用的內容。

第二個: 使用Selenium打開瀏覽器實例並像普通瀏覽器一樣加載頁面,滾動頁面並檢索信息。