2017-11-11 14 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

セレンが動作する可能性があります。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

これには2つの異なるアプローチがあります。

最初の文字は です。サイトの背後にあるデータAPIを取得してウェブスクレイピングを使用します。スクロール後にサイトの新しい情報を何にもたらすのかを理解する必要があります。 これを理解するには、ネットワークエリアにあるブラウザの開発ツール(ChromeのF12)を開き、スクロール後に何が呼び出されているか観察します。

2番目: ブラウザインスタンスを開き、通常のブラウザのようにページを読み込み、ページをスクロールして情報を取得するには、Seleniumを使用します。

関連する問題