【爬虫入门8】表单交互与模拟登录

表单交互与模拟登录

表单交互

什么是表单交互

使用python实现表单提交

无论是简单网页还是采用异步加载的网页,都是使用GET方法请求网址来请求网页信息;

如果想获得登录表单后的信息,就需要进行表单交互。

requests的post方法

import requests
payload = {
    'key1': 'value1',
    'key2': 'value2'
}
res = requests.post(url, data=payload)
res.encoding = 'utf-8'
res.text

1、查看网页源代码提交表单

以豆瓣网为例:https://www.douban.com/

找到登录表单,查看网页源代码

找到form标签,知道登录数据往action="https://www.douban.com/accounts/login"传;

找到form中的input标签,知道传输哪些数据:

<input type="hidden" value="index_nav" name="source">

<input type="text" name="form_email" id="form_email" value="" class="inp" placeholder="邮箱 / 手机号" tabindex="1" data-form-un="1533350332326.7986">

<input name="form_password" placeholder="密码" id="form_password" class="inp" type="password" tabindex="2" data-form-pw="1533350332326.7986">

传入data的内容为:name: value

import requests
url = 'https://www.douban.com/accounts/login'
payload = {
    'source' : 'index_nav',
    'form_email': [email protected],
    'form_password': xxx
}

res = request.post(url, data=payload)
res.encoding='utf-8'
page = res.text

2、逆向工程提交表单

还有另一种方式,查看提交表单内容;

使用浏览器开发者工具,进入Network,输入账号密码登录后查看抓到的数据包。

模拟登录

有些时候表单数据可以通过加密或者其他形式进行包装,增大了构造表单的难度;

有些时候还需要输入验证码;

这个时候可以选择提交cookie信息进行模拟登录,绕过表单。

cookie概述

存储用户信息的本地文件;

某些网站为了辨别用户身份进行session跟踪保存在用户本地终端上的数据。

提交cookie模拟登录

import requests
url = 'https://www.douban.com/'
headers ={
    'Cookies':'xxxx'
}
request.get(url,headers=headers)

爬取拉勾网招聘信息

进入拉勾网主页 https://www.lagou.com/,搜索python

然后查看网页源代码,无法搜索到页面显示的招聘信息;

换页查看,发现浏览器显示的url也并没有发生改变,所以换页其实也是通过AJAX做的;

F12查看XHR,可以知道它是通过提交form表单请求数据,然后返回一个Json数据

我们只需要获取它的Json数据;

此外,每页展示15条,总共3837条;页面上只展示30页(450条)

猜你喜欢

转载自blog.csdn.net/weixin_39723165/article/details/81408199
今日推荐