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\n")
        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的时候把发送的所有值放进去就好了

转载于:https://www.cnblogs.com/bamboozone/p/10457370.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值