Python 爬虫模拟登陆
来源:互联网 发布:live2d有mac版本的吗 编辑:程序博客网 时间:2024/05/16 11:16
作为一个啥也不懂的小白。为了毕业开始好好写程序和心得。
最近开始忙毕业项目,数据需要使用爬虫获取。于是打算把整个过程用csdn的博客记录下来
首先爬取网页,尤其是社交网站最需要的就是在爬取之前进行登录。
这个爬虫的目的是模拟登录豆瓣网,并验证性的做一个跳转。
主要难点还是在于验证码的处理上。
由于第一次请求的网页附带的验证码和第二次的不同所以会出现一个问题验证码不统一。
于是我们需要使用cookie将登录数据整合起来发送给需要接受的url
这是登录的网页的 url
这是网页以及post的信息
其中 post代表的是将这个页面的登录信息发送给 www.douban.com
所以具体的流程就是在第一个url中请求后判断有无验证码,再将登录信息发给需要访问的主页。
代码如下
"""Created on Wed Sep 13 14:40:35 2017@author: vcc"""import requestsimport urllibimport cookielibimport urllib2import reimport time'''cjar = cookielib.CookieJar()opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cjar))urllib2.install_opener(opener)'''#############装载到了urllib包下url = "https://accounts.douban.com/login"#mysession = requests.Session()#r = mysession.get(url,timeout=60*4)url3 = "https://douban.com/"pat_cap = "https://www.douban.com/misc/.*?=s"headers2 = ('User-Agent',"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36")temp = opener.open(url).read()time.sleep(3)captcha = re.compile(pat_cap).findall(str(temp))#captcha = urllib2.urlopen(url).xpath('//img[@id="captcha_image"]/@src').extract()if len(captcha)>0: print "it have yanzhengma-------------------" urllib.urlretrieve(captcha[0],"E://pythontest/captcha.png") captcha_value = raw_input() postdata = urllib.urlencode({ "form_email":"872823789@qq.com", "form_password":"yangqi1994", "captcha-solution":captcha_value }).encode('utf-8')else: print "nothave yanzhengma =--------------------------------------" postdata = urllib.urlencode({ "form_email":"872823789@qq.com", "form_password":"yangqi1994" }).encode('utf-8')time.sleep(4)req = urllib2.Request(url3,postdata)req.add_header('User-Agent',"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36")cjar = cookielib.CookieJar()opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cjar))urllib2.install_opener(opener)##################urllib 的保存cookie 与程序出现的位置有关系 cookie保存的是第一次打开网页的时候的登录信息try: response = opener.open(req) result = response.read() print resultexcept urllib2.HTTPError,e: print eprint '------------------------------------------------------------------------------------------------------------'time.sleep(2)url2 = "https://www.douban.com/people/166640189/"'''req = urllib2.Request(url2)req.add_header('User-Agent',"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36")'''data = opener.open(req).read()print data
需要注意的是cookie添加的位置将影响到cookie信息的保存。
阅读全文
0 0
- python爬虫 模拟登陆
- Python 爬虫模拟登陆
- python 爬虫模拟登陆
- 《python爬虫实战》:模拟登陆
- Python爬虫之模拟登陆
- Python爬虫模拟登陆豆瓣
- python爬虫模拟登陆知乎网
- [python爬虫]模拟登陆扇贝单词
- [python爬虫]selenium+PhantomJS模拟登陆
- python爬虫之模拟登陆csdn
- Python爬虫模拟登陆知乎
- Python 爬虫模拟登陆知乎
- Python爬虫笔记-豆瓣模拟登陆
- Python爬虫技术(一)--模拟登陆
- Python爬虫之模拟登陆知乎
- python selenium网络爬虫 模拟登陆
- Python 爬虫之模拟登陆CSND
- Python爬虫模拟登陆知乎
- 关于python的基础知识9--文件写入列表
- MyBatis缓存策略之二级缓存
- 《慕课网玩转算法面试》笔记及习题解答8.4~8.5
- vue2.0对API的一些理解
- SpringMVC学习小结
- Python 爬虫模拟登陆
- 手机移动端web前端常见问题整理
- 介绍缓存的基本概念和常用的缓存技术
- Python中range()函数的用法
- 【转】城市防洪、排涝及排水设计标准的区别
- LCD驱动---LVDS及调试中的问题(一)
- 学习Hadoop对算法和数据结构要求高吗?
- BCG与阿里研究院等联合揭秘中国互联网经济:成功的关键是什么?
- Java设计模式之中介者模式