zoukankan      html  css  js  c++  java
  • https://scrapingclub.com/exercise/basic_captcha/

        def parse(self, response):
            # set_cookies = response.headers.getlist("set-cookie").decode("utf-8")
    
            pattern1 = re.compile('csrftoken=(.*?);')
            pattern2 = re.compile('cfduid=(.*?);')
            csrftoken = pattern1.findall(response.headers.getlist("set-cookie")[1].decode("utf-8"))[0]
            cfduid = pattern2.findall(response.headers.getlist("set-cookie")[0].decode("utf-8"))[0]
    
    
            captcha_0= response.css('div input[name*=captcha_0]::attr(value)').get()
            captcha_1_url= 'https://scrapingclub.com'+str(response.xpath('//div/img/@src').extract()[0])
            print(captcha_1_url)
            captcha_1= input("check captcha  then input
    ")
            cookie = {
                '__cfduid': cfduid,
                'csrftoken': csrftoken,
                # '_ga': 'GA1.2.2039087667.1551428649',
                # '_gid': 'GA1.2.222080927.1551428649',
    
                # 'gat_gtag_UA_39890589_8': 1,
            }
            return scrapy.FormRequest('https://scrapingclub.com/exercise/basic_captcha/',cookies=cookie, headers=header, callback=self.parse_login,
                formdata={
                'name':'scrapingclub',
                'password':'scrapingclub',
                'csrfmiddlewaretoken':response.css("form input::attr(value)").get(),
                'captcha_0':captcha_0,
                'captcha_1':captcha_1,
            }
            )

    这次练习的过程中遇到了很多坑,大坑第一条:因为我每次都是在以前建好的project上直接修改请求地址,修改了starturl后没有修改Formrequest的导致一直获取不到验证码的地址,在scrapy shell试过很多次之后不明白为什么,后来换成xpath,xpath用的少,语法不熟悉又重新查看语法还是不知道为什么,最后突然发现没有改formrequest的url。。。

    大坑第二条:一直在纠结 '_ga'和'_gid'这两个东西要不要构造。。。cookie里有,后来搜了下 '_ga'的4段内容分别包含的是什么,最后也没管它,

    大坑第三条:'csrfmiddlewaretoken'不知道为什么变成了'csrfmiddleware token'中间多了个空格。。。。。。。。。。试了好几次感觉代码逻辑并没错重新看代码发现了这个问题

    大坑第四条:其实刚开始不知道自己是什么分析set cookies的,下次做的时候应该:

    1:先空表格网页请求一遍,看response header set cookie设置的是什么值,构造cookie就把set的值放就去就好了

    2:输入name密码再请求一遍,看request form data发送了什么值,在构造form request的时候把发送的所有值放进去就好了

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- focus on what you want to be
  • 相关阅读:
    python3操作sqlserver,查询数据统计导出csv
    scrapy入门二(分页抓取文章入库)
    stm32 调试时卡在LDR R0, =SystemInit
    STM32F407 串口通信实验 第26节 个人笔记
    STM32F407 串口通信:分类&常见接口 个人笔记
    STM32F407 IO引脚复用器和映射 个人笔记
    STM32F407 按键输入实验 库函数版 个人笔记
    STM32F407 GPIO 库函数编程套路(led与beep总结) 个人笔记
    STM32F407 跑马灯 寄存器版 个人笔记
    STM32F407 跑马灯 库函数版 个人笔记
  • 原文地址:https://www.cnblogs.com/bamboozone/p/10457370.html
Copyright © 2011-2022 走看看