Scrapy Shell - 如何更改USER_AGENT

23 投票
2 回答
19861 浏览
提问于 2025-04-18 18:05

我有一个完全可以用的 scrapy 脚本,可以从一个网站提取数据。在设置的时候,目标网站根据我的 USER_AGENT 信息把我给封了。于是我添加了一个 RotateUserAgentMiddleware,这样可以随机更换 USER_AGENT。这个方法效果很好。

但是现在,当我尝试使用 scrapy shell 来测试 xpath 和 css 请求时,我遇到了 403 错误。我确定这是因为 scrapy shell 的 USER_AGENT 默认值被目标网站列入了黑名单。

问题是:在 scrapy shell 中,有没有办法用不同于默认的 USER_AGENT 来获取一个网址?

fetch('http://www.test') [加点什么来改变 USER_AGENT 呢?]

谢谢

2 个回答

16

在scrapy的命令行工具里,你可以在请求的头部设置

url = 'http://www.example.com'
request = scrapy.Request(url, headers={'User-Agent': 'Mybot'})
fetch(request)
61

这个命令的意思是用 Scrapy 这个工具打开一个命令行界面,并且设置一个自定义的用户代理(USER_AGENT),然后访问一个网址,比如 'http://www.example.com'。

简单来说,用户代理就是告诉网站你用什么浏览器或者设备在访问它。通过这个命令,你可以模拟不同的浏览器来测试网站的反应。

撰写回答