如何抓取仅在点击&#34后解锁的文字;更多"按键

时间:2017-01-23 20:30:07

标签: python web-scraping beautifulsoup

我试图从旅行顾问网站上搜索一篇评论。我成功地抓取了评论,但有些评论很长并且部分显示,直到您点击"更多"按钮。

这是该网站的链接: 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()

如何在点击更多按钮后抓取所有评论?

2 个答案:

答案 0 :(得分:1)

尝试在Selenium中加载页面。这将允许您与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") 

答案 1 :(得分:0)

enter image description here

当您点击More链接时,JavaScript代码将在浏览器中运行以获取数据或跳转到另一个链接,requests将返回html代码,它无法处理JavaScript。