我正在尝试从亚马逊收集一些书籍评论。这是我到目前为止所做的:
import requests
from bs4 import BeautifulSoup
def data(site):
url = site
r = requests.get(url)
soup = BeautifulSoup(r.text)
y = soup.find_all("div", style = "margin-left:0.5em;")
words = []
for item in y:
item = str(item.text).split()
words.append(item)
reviews = [" ".join(x) for x in words]
return reviews
f = data('http://www.amazon.com/Dance-Dragons-Song-Fire-Book/product-reviews/0553801473/ref=cm_cr_pr_top_link_11?ie=UTF8&pageNumber=11&showViewpoints=0&sortBy=bySubmissionDateDescending')
除了审核之外,我还会收到一些无关的信息,例如作者,标题以及发现评论有用的人数。有没有办法使用BeautifulSoup排除除评论文本之外的所有内容?评论的文本没有类或样式属性,文本的其他部分(我认为......),但我没有找到过滤我的soup.find_all结果的方法。我真的很感激任何帮助。
答案 0 :(得分:0)
所有评论都附在table
中,因此您可以先找到该表,然后从每个评论中提取评论文本。
更改此行应该这样做:
...
y = soup\
.find('table', {'id' : 'productReviews'})\ # here you find the table
.find_all("div", style = "margin-left:0.5em;")
...