Scrapy Shell

发布于 2022-09-12 03:52:59 字数 282 浏览 40 评论 0

截屏2020-07-27 下午1.50.08.png

response <404...> 是出错了吗?

之后用 xpath 一直没有返回东西。xpath我用插件检查也是对的。

截屏2020-07-27 下午1.53.22.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2022-09-19 03:52:59

首先404问题

你这个url https://segmentfault.com/serarch?q=python&page=1 确实是404的, 如下图我刚测试的
我写错了,重新看看, 这是我用requests写的,你肯定scrapy哪里发送请求有问题, 还有就是你xpath语法有点问题(我好久没写xpath了,提示xpath语法报错)

import requests
from parsel import Selector  # pip install parsel Scrapy官方把Selector抽出来的解析库

url = "https://segmentfault.com/search?q=python&page=1"

headers = {
    "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
}

res = requests.get(url, headers=headers)


selector = Selector(text=res.text)

res = selector.xpath('//section//a/@href').extract()

print(res)
# ['/q/1010000003713912', '/a/1190000016012554', '/a/1190000015295218', '/a/1190000022539406', '/a/1190000021217438', '/a/1190000019860830', '/q/1010000004943967', '/a/1190000012121101', '/a/1190000020409601', '/q/1010000008445872', '/a/1190000022460603', '/q/1010000004254202', '/ls/1650000017333471/l/1500000016161912', '/q/1010000012425420', '/a/1190000019993378', '/a/1190000021752983', '/a/1190000022744145', '/a/1190000016108471', '/q/1010000005606698', '/q/1010000008108222']

xpath为空

这个是因为你response返回值为空?你可以输出验证下print(response.text)从而导致提取不到值

定格我的天空 2022-09-19 03:52:59

找个没有反爬的网站。

segmentfault 有反爬。

你输出 response.text 会发现其实是有拿到 segmentfault 的 response 内容的。

只不过内容是 404 的页面文本。


总结来说就是这不是 xpath 的问题,是你拿到的 response 内容就和你用浏览器访问的内容不同。所以你用(根据浏览器显示的) xpath 去获取内容自然会出错。所以你需要解决的是反爬问题。


另外,我之前也在找 xpath helper 插件,不过在 chrome 商店都没有找到,哪里找的可以分享一下吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文