2017-01-23 7 views
0

トリップアドバイザーアドバイザーのウェブサイトからレビューをスクラップしようとしています。私はレビューを掻き集めることに成功しましたが、あなたは "more"ボタンをクリックするまで、一部のレビューは長く、部分的に表示されます。「more」ボタンをクリックした後にのみロックを解除するテキストを掻き取る方法

これは、ウェブサイトのリンクです: https://www.tripadvisor.ca/Hotel_Review-g190479-d3587956-Reviews-The_Thief-Oslo_Eastern_Norway.html#REVIEWS

これは、「もっと」ボタンのソースコードです:

<span class= soup.findAll(attrs={"class": "entry"}): 
    review = item.text.replace(',', '').replace('\n', ' ').encode('utf-8').strip() 

これは私がページ

からのレビューをつかむ方法です
for item in soup.findAll(attrs={"class": "entry"}): 
    review = item.text.replace(',', '').replace('\n', ' ').encode('utf-8').strip() 

ボタンをクリックした後にすべてのレビューをスクラップするにはどうすればよいですか?

答えて

1

セレンでページを読み込みます。これにより、javascriptと対話することができます。私はBeautifulSoupで試したことはありませんが、これは次のようになります:

from selenium import webdriver 
import BeautifulSoup 

browser = webdriver.Firefox() #Or any other driver you want 
browser.get('https://www.tripadvisor.ca/Hotel_Review-g190479-d3587956-Reviews-The_Thief-Oslo_Eastern_Norway.html#REVIEWS') 
next_btn = browser.find_element_by_xpath('PATH_FOR_NEXT_LINK_ELEMENT') 
next_btn.click() 
html_source = browser.page_source 
browser.quit() 

soup = BeautifulSoup.BeautifulSoup(html_source) 
review = soup("YOUR_SCRAPING_LOGIC") 
0

enter image description here

あなたがMoreリンクをクリックすると、JavaScriptコードがrequestsは、htmlコードを返します、データを取得したり、別のリンクにジャンプするには、ブラウザで実行されます、それはJavaScriptを処理することはできません。

関連する問題