Python 爬虫模拟登陆

这篇博客记录了一个Python小白的毕业项目经历,通过爬虫获取数据,并详细阐述了如何模拟登录豆瓣网的过程。主要难点在于验证码处理,因为首次请求的验证码与二次使用时不同。解决方案是利用cookie整合登录数据并发送到目标URL。代码实现中,注意cookie的正确添加以确保登录状态的维持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作为一个啥也不懂的小白。为了毕业开始好好写程序和心得。

最近开始忙毕业项目,数据需要使用爬虫获取。于是打算把整个过程用csdn的博客记录下来

首先爬取网页,尤其是社交网站最需要的就是在爬取之前进行登录。

这个爬虫的目的是模拟登录豆瓣网,并验证性的做一个跳转。

主要难点还是在于验证码的处理上。

由于第一次请求的网页附带的验证码和第二次的不同所以会出现一个问题验证码不统一。

于是我们需要使用cookie将登录数据整合起来发送给需要接受的url

这是登录的网页的 url

这是网页以及post的信息



其中 post代表的是将这个页面的登录信息发送给 www.douban.com

所以具体的流程就是在第一个url中请求后判断有无验证码,再将登录信息发给需要访问的主页。


代码如下


# -*- coding: utf-8 -*-
"""
Created on Wed Sep 13 14:40:35 2017

@author: vcc
"""
import requests
import urllib
import cookielib
import urllib2
import re
import 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 result
except urllib2.HTTPError,e:
    print e
print '------------------------------------------------------------------------------------------------------------'


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信息的保存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值