python 爬虫之模拟简单表单提交

为什么要模拟表单提交

现在许多的网站都是需要登录验证后才能访问该网站的页面,爬虫(网络机器人【spider】)该怎么获取这些页面呢!是的,爬虫也是需要登录的,才能获取到后面的页面。

爬虫怎么模拟表单登录

  • 复杂的办法,先爬取登录界面,得到登录表单需要的数据
import requests
from bs4 import BeaytifulSoup

def main():
    resp = request.get('https://github.com/login')
    # 判断服务器返回的状态码是不是200(表示成功)
    if resp .status_code != 200:
        return
    # 获取返回对象里的cookies   
    cookies = resp.cookies.get_dict()
    soup = BeautifulSoup(resp.text,'lxml')
    utf_8_value = soup.select_one('form input[name=utf8]').attrs['value']
    # 得到csrf
    authenticity_token = authenticity_token = soup.select_one('form input[name=authenticity_token]').attrs['value']
    # 把提交表单的数据放在字典
    data = {
         'utf8': utf8_value,
        'authenticity_token': authenticity_token,
        'login': '1304173787@qq.com',
        'password': 'lijin136283',
    }
    # 发出提交表单的post请求
    resp = requests.post('http://github.com/session', data=data,
                         cookies=cookies)


if __name__ == '__main__':
    main()  
  • 简单的方法,直接用python模块(robobrowser)
pip install   robobrowser  # 安装模块
import requests
import robobrowser

def mian():
    # 获取对象
    b = robobrowser.RoboBrowser(parser='lxml')
    # 打开表单的网址
    b.open('https://github.com/login')
    # 获得要提交的哪个表单
    f = b.get_form(action='/session')
    # 登录的账号
    f['login'].value = '1304173787@qq.com'
    # 登录的密码
    f['password'].value = 'lijin'
    # 提交表单
    b.submit_form(f)
    # 获取提交成功后主页的数据
    for a_tag in b.select('a[href]'):
        print(a_tag.attrs['href'])


if __name__ == '__main__':
    main()

这两个表单的提交都是在没有验证码的情况下实现的。但是现实中,每个网站都为了防止机器提交表单,都有相应的验证码。

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
初级教程看:https://download.csdn.net/download/dwf1354046363/20818468 9 网络爬虫进阶之 Selenium 篇 9.1 Selenium 简介 . . . . . . . . 9.1.1 Selenium 是什么 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 9.1.2 Selenium 特点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 9.1.3 基本安装与使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 9.1.4 各种浏览器驱动下载地址 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 9.1.5 Selenium 初试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 9.2 定位元素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 9.2.1 基本的定位方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 9.2.2 使用 By 定位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 9.2.3 定位一组元素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 9.3 控制浏览器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 9.3.1 控制浏览器窗口大小 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 9.3.2 控制浏览器后退、前进 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 9.3.3 模拟浏览器刷新 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 9.4 WebDriver 中的常用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 9.5 设置元素等待 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 9.5.1 显式等待 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 9.5.2 隐式等待 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 9.6 多表单切换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 9.7 多窗口切换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 9.8 其他操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值