python - 如何在scrapy运行之前手动进行身份验证?
问题描述
我想在登录之前抓取一个使用大量验证码挑战的网页(例如,依次进行 20 多个挑战)。
我怎样才能登录,通过我解决验证码,用我的物理手,即不使用 Selenium 等,然后运行网络抓取。我曾尝试在 Scrapy 文档、教程和网络搜索中查找具有相同功能的代码,但一无所获。
强制性代码没有做我要问的事情:
import scrapy
class BadSpider(scrapy.Spider):
name = "bad"
def start_requests(self):
[...]
def parse(self, response):
if (response.url.endswith('/login')):
print('!!!!! I have no idea what to do here!!!!')
else:
[...]
我希望它在我手动验证后启动。但是,相反,它开始了,我还没有登录,所以我不能走得更远。
解决方案
- 您只需在浏览器中手动进行身份验证
- 然后打开浏览器的 DevTools
- 导航到网络选项卡
- 重新加载您要抓取的页面
- 然后在 Network 选项卡中,右键单击第一个请求并查找
Copy as cURL (bash)
选项 - 转到https://curl.trillworks.com/并粘贴您的代码
- 复制标题和 cookie,然后你就完成了
PS:我建议在 Mozilla Firefox 中执行此操作,因为有时 Chrome 的 DevTools 会在https://curl.trillworks.com/中产生不正确的结果
推荐阅读
- python - csv的伪代码转换成python
- python - 在 Pandas 中替换列表类型列中的重复项
- python - 如何在 Kivy 的滚动视图顶部创建一个固定按钮?
- python - 使用条件语句将值映射到分隔 col:python
- javascript - 如何计算 HTML 字符串中的所有图像标签?
- javascript - 如何从父对象列表中删除子对象javascript
- api - 为什么电源自动化自定义连接器为不同的请求 URL 返回相同的结果?
- mysql - 我应该如何存储气象站数据?
- ruby - I am trying to make an input case insensitive, can someone explain how to do that?
- arrays - 类似 Python 的数组填充 - C 等效