• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
oooooolr
You can do anything but not everything. ——David Allen
博客园    首页    新随笔    联系   管理    订阅  订阅

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

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- focus on what you want to be
posted @ 2019-03-01 16:52  oooooolr  阅读(310)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3