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://scrapingclub.com/exercise/basic_captcha/的更多相关文章
- https://scrapingclub.com/exercise/detail_sign/
def parse(self, response): # pattern1 = re.compile('token=(.*?);') # token = pattern1.findall(respon ...
- https://scrapingclub.com/exercise/basic_login/
遇到的问题:csrftoken cfduid 是在request.headers里面的,一直在找怎么在scrapy里get request.header,从scrapy shell ,then fet ...
- https://scrapingclub.com/exercise/detail_cookie/
def parse(self, response): pattern=re.compile('token=(.*?);') token=pattern.findall( response.header ...
- materials
http://interactivepython.org/runestone/static/pythonds/index.html https://blog.michaelyin.info/scrap ...
- Pycharm学习python路
import 模块之后是灰色的表明没有被引用过 lxml找不到的话用anaconda prompt :pip uninstall lxml 重新安装 用request时,写的reg无法正确解析网页,先 ...
- MIT 6.828 JOS学习笔记5. Exercise 1.3
Lab 1 Exercise 3 设置一个断点在地址0x7c00处,这是boot sector被加载的位置.然后让程序继续运行直到这个断点.跟踪/boot/boot.S文件的每一条指令,同时使用boo ...
- MIT 6.828 JOS学习笔记3. Exercise 1.2
这篇博文是对Lab 1中的Exercise 2的解答~ Lab 1 Exercise 2: 使用GDB的'si'命令,去追踪ROM BIOS几条指令,并且试图去猜测,它是在做什么.但是不需要把每个细节 ...
- (14)Why some people find exercise harder than others
https://www.ted.com/talks/emily_balcetis_why_some_people_find_exercise_harder_than_others/transcript ...
- 【原】Coursera—Andrew Ng机器学习—编程作业 Programming Exercise 4—反向传播神经网络
课程笔记 Coursera—Andrew Ng机器学习—课程笔记 Lecture 9_Neural Networks learning 作业说明 Exercise 4,Week 5,实现反向传播 ba ...
随机推荐
- 推荐一本写给IT项目经理的好书
原文地址:http://www.cnblogs.com/cbook/archive/2011/01/19/1939060.html (防止原文作者删除.只能拷贝一份了) 推荐一本写给IT项目经理的好书 ...
- IDEA2018.2破解方法
前言 之前也试过多种方式,但是总是使用了一会儿又需要破解,今天又找了一个,不知道可以使用多久. 目前看是可以破解开的,所以分享一下. 适用于JetBrain旗下版本为2.3或2.4的所有产品 一.在 ...
- android studio设置imageview显示图片
拖动imageview 选择图片 .png 代码引用: private Imageview pay; pay = (ImageView)findViewById(R.id.imageView2); p ...
- python 中 __init__方法
注意1,__init__并不相当于C#中的构造函数,执行它的时候,实例已构造出来了. class A(object): def __init__(self,name): self.name=name ...
- MySQL命令学习
上面两篇博客讲了MySQL的安装.登录,密码重置,为接下来的MySQL命令学习做好了准备,现在开启MySQL命令学习之旅吧. 首先打开CMD,输入命令:mysql -u root -p 登录MySQ ...
- [BTS] BizTalk EDI character set and separator settings
最近一个项目上遇到需要对EDI头.分隔符.小数点等配置项进行设置. 这里只记录一下结果,原理不记了,多看MSDN. UNB1中的信息在BizTalk中是不会体现在EDI输出文件中的,双方协商好即可. ...
- ubuntu16.04 在/etc/network/interfaces设置static ip无效
双网卡使用无线网卡上互联网,使用以太网卡连局域网,在/etc/network/interfaces里对以太网卡设置static ip无效,使用ifconfig临时设置也仅能工作一会,设置的ip马上就消 ...
- Qt编写自定义控件6-指南针仪表盘
前言 指南针仪表盘,主要用来指示东南西北四个方位,双向对称两个指针旋转,其实就是360度打转,功能属于简单型,可能指针的绘制稍微难一点,需要计算多个点构成多边形,本系列控件文章将会连续发100+篇,一 ...
- 五、Sql Server 基础培训《进度5-数据类型(知识点+实际操作)》
知识点: ================================================= ============================================= ...
- window alias给cmd命令起别名
场景: Linux的alias命令是个非常实用的工具,任何命令通过alias可以精简到很短,比如:alias l='ls -l' Windows也有alias类似的命令,就是:doskey,开启方法也 ...