下面我来讲解一下“Python采用requests库模拟登录和抓取数据的简单示例”:
1. 简介
requests库是一个Python第三方库,用于处理http请求,是Python开发中用的最为广泛的第三方库之一。我们可以利用requests模拟登录网站并抓取网站数据。
2. 环境准备
在使用requests模拟登录之前,需要安装requests库,安装命令如下:
pip install requests
3. 实例说明
3.1 模拟登录拉勾网并抓取数据
以模拟登录拉勾网为例,我们需要分两步进行操作,一是模拟登录,二是抓取数据。
3.1.1 模拟登录
模拟登录需要先访问登录页面,获取登录所需的参数,包括表单数据和cookie。
import requests
# 访问登录页面,获取cookie以及请求参数
login_url = 'https://passport.lagou.com/login/login.html'
s = requests.session()
r = s.get(login_url, verify=False)
cookie = r.cookies
# 构建请求头
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Content-Length': '25',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Host': 'passport.lagou.com',
'Origin': 'https://passport.lagou.com',
'Referer': 'https://passport.lagou.com/login/login.html',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'
}
# 构建请求参数
data = {
'isValidate': 'true',
'username': 'xxx',
'password': 'xxx',
'request_form_verifyCode': '',
'submit': ''
}
# 模拟登录,而后获取响应
r = s.post('https://passport.lagou.com/login/login.json', data=data, headers=headers, cookies=cookie, verify=False)
print(r.content.decode('utf-8'))
以上代码中的username和password需要替换成你自己的账号和密码。接下来我们在登录之后,通过requests发起一个抓取数据的请求,示例代码如下:
3.1.2 抓取数据
# 模拟登录之后的请求
resp = s.post('https://www.lagou.com/mycenter/resume.html?st=load&force=true', headers=headers, cookies=cookie, verify=False)
print(resp.content.decode('utf-8'))
以上代码中的请求链接'https://www.lagou.com/mycenter/resume.html?st=load&force=true'是拉钩网个人中心页面的链接。
3.2 模拟登录GitHub并抓取数据
以模拟登录GitHub为例,我们也需要分两步进行操作,一是模拟登录,二是抓取数据。
3.2.1 模拟登录
import requests
# 访问登录页面,获取cookie
login_url = 'https://github.com/login'
s = requests.session()
r = s.get(login_url, verify=False)
cookie = r.cookies
# 构建请求参数
data = {
'commit': 'Sign in',
'utf8': '✓',
'authenticity_token': '',
'login': 'xxx',
'password': 'xxx'
}
# 获取authenticity_token
auth_token = r.text.split('name="authenticity_token" value="')[1].split('"')[0]
data['authenticity_token'] = auth_token
# 模拟登录,而后获取响应
r = s.post('https://github.com/session', data=data, cookies=cookie, verify=False)
print(r.content.decode('utf-8'))
以上代码中的login和password需要替换成你自己的账号和密码。接下来我们在登录之后,通过requests发起一个抓取数据的请求,示例代码如下:
3.2.2 抓取数据
# 模拟登录之后的请求
resp = s.get('https://github.com/settings/emails', cookies=cookie, verify=False)
print(resp.content.decode('utf-8'))
以上代码中的请求链接'https://github.com/settings/emails'是GitHub个人设置页面中的链接,我这里抓取的是GitHub绑定的邮箱地址。
4.总结
以上就是Python采用requests库模拟登录和抓取数据的简单示例的详细攻略。在抓取数据之前一定要模拟登录获取cookie和authenticity_token,以便能够正常获取数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python采用requests库模拟登录和抓取数据的简单示例 - Python技术站