获取特定div的span类内的文本

时间:2019-03-25 21:38:46

标签: python html web-scraping

我正在刮擦T-Mobile网站上有关三星Galaxy S9的评论。我可以为HTML代码创建一个Beautiful Soup对象,但是我无法获取span类中存在的评论文本,还需要遍历评论页面以收集所有评论。

我尝试了2个代码,但是一个返回错误,另一个返回空列表。我也找不到汤对象中需要的特定跨度类。

from urllib.request import Request, urlopen
from bs4 import BeautifulSoup

tmo_ratings_s9 = []

req = Request('https://www.t-mobile.com/cell-phone/samsung-galaxy-s9', headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req).read()
tmo_soup_s9 = BeautifulSoup(webpage, 'html.parser')
tmo_soup_s9.prettify()
for review in tmo_soup_s9.find_all(class_="BVRRReviewText"):
    text = review.span.get_text(strip=True)
    tmo_soup_s9.append(text)

print(tmo_ratings_s9)


############################################################################

from urllib.request import urlopen
html = urlopen("https://www.t-mobile.com/cell-phone/samsung-galaxy-s9")

soup=BeautifulSoup(html)

ratings = soup.find_all('div', class_='BVRRReviewTextParagraph BVRRReviewTextFirstParagraph BVRRReviewTextLastParagraph')     
textofrep = ratings.get_text().strip()
tmo_ratings_s9.append(textofrep)

我希望从网页上的所有8个页面中获取评论文字,并将其存储在HTML文件中。

3 个答案:

答案 0 :(得分:2)

首先,如果您使用的是google chrome或mozilla firefox,请从页面按ctrl + u,然后转到页面源。通过搜索一些关键字来检查评论内容是否在源中的任何地方。如果存在,请写出该数据的xpath;如果不存在,请在网络部分检查网络部分,以在页面加载时发送任何json请求;如果不存在,则必须使用硒。

在您的情况下,将请求发送到此页面 https://t-mobile.ugc.bazaarvoice.com/9060redes2-en_us/E4F08F7E-8C29-4420-BE87-9226A6C0509D/reviews.djs?format=embeddedhtml

这是加载整个页面时发送的json请求。

答案 1 :(得分:1)

由于通过脚本动态加载内容,因此无法获取数据。您可以尝试硒和草皮。

1.1.0

答案 2 :(得分:0)