首页 > 解决方案 > 如何在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:
            [...]

我希望它在我手动验证后启动。但是,相反,它开始了,我还没有登录,所以我不能走得更远。

标签: pythonscrapy

解决方案


  1. 您只需在浏览器中手动进行身份验证
  2. 然后打开浏览器的 DevTools
  3. 导航到网络选项卡
  4. 重新加载您要抓取的页面
  5. 然后在 Network 选项卡中,右键单击第一个请求并查找Copy as cURL (bash)选项
  6. 转到https://curl.trillworks.com/并粘贴您的代码
  7. 复制标题和 cookie,然后你就完成了

PS:我建议在 Mozilla Firefox 中执行此操作,因为有时 Chrome 的 DevTools 会在https://curl.trillworks.com/中产生不正确的结果


推荐阅读