3 回答

TA贡献2036条经验 获得超8个赞
首先,如果您使用的是 google chrome 或 mozilla firefox,请在页面上按 ctrl+u,然后您将转到页面源代码。通过搜索一些关键字来检查评论内容是否存在于源中的任何位置。如果存在,请写入该数据的 xpath,如果不存在,请检查页面加载时发送的任何 json 请求的网络部分,如果不存在,则必须使用 selenium。
在您的情况下,向此页面发送请求 https://t-mobile.ugc.bazaarvoice.com/9060redes2-en_us/E4F08F7E-8C29-4420-BE87-9226A6C0509D/reviews.djs?format=embeddedhtml
这是加载整个页面时发送的 json 请求。

TA贡献1798条经验 获得超7个赞
由于通过脚本加载动态内容,您无法获取数据。您可以尝试 selenium 和scrapy。
import scrapy
from selenium import webdriver
from scrapy.http import HtmlResponse
class ProductSpider(scrapy.Spider):
name = "product_spider"
allowed_domains = ['t-mobile.com']
start_urls = ['https://www.t-mobile.com/cell-phone/samsung-galaxy-s9']
def __init__(self):
self.driver = webdriver.Firefox()
def parse(self, response):
self.driver.get(response.url)
body = str.encode(self.driver.page_source)
self.parse_response(HtmlResponse(self.driver.current_url, body=body, encoding='utf-8'))
def parse_response(self, response):
tmo_ratings_s9 = []
for review in response.css('#reviews div.BVRRContentReview'):
text = review.css('.BVRRReviewText::text').get().strip()
tmo_ratings_s9.append(text)
print(tmo_ratings_s9)
def spider_closed(self, spider, reason):
self.driver.close()

添加回答
举报