python模拟登陆豆瓣_模拟登陆豆瓣并爬取个人主页(爬虫项目三)

本文介绍如何使用Python的requests库模拟登录豆瓣并爬取个人主页。通过确定真实的登录地址,提取并手动输入验证码,以及保存会话信息来实现登录。最后展示了成功抓取的豆瓣首页和个人主页。
摘要由CSDN通过智能技术生成

因为最近在工作比较忙,在学习MYsql和Excel数据分析,所以到今天才更新,闲言少叙,进入今天的学习。

在前面的两个爬虫项目我们分别抓取了京东的口红图片和糗百的段子,这种爬虫比较低级,算是练练手,今天的抓取豆瓣个人主页则相对困难一些,然后今天的爬虫我们采用了requests库让大家学习。

下面我来总结一下抓取过程中的知识点和难点。

1、确定真实的登陆地址。

因为在豆瓣的登陆界面并不是真实的登陆地址,所以此时我们不能向服务器post参数模拟登陆,因此我们需要确定真实的登陆地址。

首先打开chorme浏览器,输入豆瓣网址,输入账号、密码和验证码,如图:

注意,此时千万要点击登陆。

接着,我们按下F12,选中Network,此时点击登陆,如图:

我们可以看到,第一个login选项即我们的真实登陆地址,将其地址复制出来。

2、post参数

上图我们可以看到From Data参数,即post表单,如下图:

参数有账号、密码和source,这三个时固定的,变化的只有captcha-solution与captcha-id。

3、captcha-id可以通过正则表达式提取,那么验证码如何提取呢?一种方法是找打码平台,这适合大型爬虫,不适合我们。再次我们选择提取出爬虫的链接,手动输入。

4、保存会话信息,此处我们用到了requests.session方法,代码中有注释。

源码及注释如下:

import requests

import http.cookiejar

import urllib

import re

url1 ='https://www.douban.com/accounts/login'#真实登陆页面

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}#头信息

data = requests.get(url1,headers=headers)#第一次请求,目的是匹配出对应的验证码和验证id

data=data.text#转换为字符串

patsl=re.compile('captcha').findall(data)#正则表达式匹配验证码地址

patid=re.compile('').findall(data)#正则表达式匹配验证id

print('验证码链接为:',patsl)

postdata={'source':'index_nav'}#post表单信息

postdata['captcha-id']=patid[0]

postdata['captcha-solution']=input('请输入验证码:')

postdata['form_email']=input('请输入账号:')

postdata['form_password']=input('请输入密码:')

session=requests.Session()#维持会话

#模拟登陆,传入post参数,并维持会话

data1=session.post(url1, data=postdata, headers=headers)

data1=data1.content

htmls=open('D:/python36/pachong/10.html','wb')

htmls.write(data1)

htmls.close()

#第二次登陆,此时处于登陆状态

url2='https://www.douban.com/people/189844988/'

data2=session.get(url2,headers=headers).content

htmls=open('D:/python36/pachong/11.html','wb')

htmls.write(data2)

htmls.close()

点击运行,我们可以看到如下:

我们将链接输入 浏览器,得到验证码,然后手动输入,然后输入账号与密码,如图:

此时,我们成功将豆瓣的首页和自己的个人主页抓取,效果如下:

模拟登陆并抓取豆瓣首页和个人主页后,就像进入了大海的入海口,豆瓣的海量资源随你抓取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值