gpt4 book ai didi

python - 无法使用 scrapy 访问 xpath 属性

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:53 24 4
gpt4 key购买 nike

我目前正在尝试抓取以下网址: http://www.bedbathandbeyond.com/store/product/dyson-dc59-motorhead-cordless-vacuum/1042997979?categoryId=10562

在此页面上,我想提取列出的评论数。即我要提取数字693。

这是我当前的 xpath:

sel.xpath('//*[@id="BVRRRatingSummaryLinkReadID"]/a/span/span')

它似乎只返回一个空数组,有人可以建议一个正确的 xpath 吗?

最佳答案

在您使用 Scrapy 获得的初始页面上没有评论。问题是评论是通过大量使用 javascript 加载和构建的,这使事情变得更加复杂。

基本上,您的选择是:

这是一个涉及使用 json 解析 javascript 代码的低级方法的工作示例和 slimit , 从中提取 HTML 并通过 BeautifulSoup 解析它:

import json

from bs4 import BeautifulSoup
import requests
from slimit import ast
from slimit.parser import Parser
from slimit.visitors import nodevisitor

ID = 1042997979

url = 'http://bedbathandbeyond.ugc.bazaarvoice.com/2009-en_us/{id}/reviews.djs?format=embeddedhtml&sort=submissionTime'.format(id=ID)

response = requests.get(url)

parser = Parser()
tree = parser.parse(response.content)
data = ""
for node in nodevisitor.visit(tree):
if isinstance(node, ast.Object):
data = json.loads(node.to_ecma())
if "BVRRSourceID" in data:
break

soup = BeautifulSoup(data['BVRRSourceID'])
print soup.select('span.BVRRCount span.BVRRNumber')[0].text

打印 693

要使解决方案适应 Scrapy,您需要使用 Scrapy 而不是 requests 发出请求,并使用 Scrapy 解析 HTML而不是 BeautifulSoup

关于python - 无法使用 scrapy 访问 xpath 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27426768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com