python采用requests库模拟登录和抓取数据的简单示例

下面我来讲解一下“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技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python实现批量读取word中表格信息的方法

    Python实现批量读取word中表格信息的方法 这是一个完整的Python脚本,可以帮助你批量读取Word文档中的表格信息。我们将使用Python库python-docx来完成这项任务。以下是一个示例脚本: 安装依赖 在开始之前,我们需要先安装python-docx库,可以使用以下命令来安装 pip install python-docx 读取Word文档…

    python 2023年5月13日
    00
  • Python编程之Re模块下的函数介绍

    下面分享一下“Python编程之Re模块下的函数介绍”的攻略。 1. 介绍 正则表达式是一种强大的字符串匹配工具,能够方便快捷地对字符串进行匹配、查找、替换等操作。Python中提供了re(正则表达式)模块,用于处理正则表达式。 re模块下提供了许多函数,包括match、search、findall、sub等等。下面分别介绍各个函数的使用。 2. re模块函…

    python 2023年5月13日
    00
  • Pyside2中嵌入Matplotlib的绘图的实现

    Pyside2是一个Python的GUI应用程序开发框架,而Matplotlib是Python绘图库之一。在Pyside2中,将Matplotlib嵌入GUI应用程序可以为用户提供高级的自定义数据可视化服务。本文将详细讲解在Pyside2中嵌入Matplotlib的绘图的实现攻略,包含以下步骤: 安装必需的Python库 在Pyside2中嵌入Matplot…

    python 2023年5月18日
    00
  • python list排序的两种方法及实例讲解

    以下是详细讲解“Python列表排序的两种方法及实例讲解”的完整攻略。 在Python中,列表是一种常用的数据类型,可以用来存储一组有序的数据。本文将介绍Python中列表的两种方法,并提供两个示例说明。 方法一:使用sort()方法 sort()方法用于对列表进行排序,可以按照升序或降序排列。例如: lst = [3, 1, 4, 2] lst.sort(…

    python 2023年5月13日
    00
  • python实现数组求和与平均值

    当我们需要对数组中的数进行求和和求平均值时,可以使用Python的内置方法和库函数来实现。下面是实现数组求和和平均值的完整攻略。 数组求和 数组元素求和的方法可以使用Python内置的sum()函数实现。以下是使用sum()函数来对数组进行求和的方法: array = [1, 2, 3, 4, 5] sum_array = sum(array) print(…

    python 2023年6月5日
    00
  • Python通用验证码识别OCR库ddddocr的安装使用教程

    接下来我将详细讲解“Python通用验证码识别OCR库ddddocr的安装使用教程”的完整攻略。 Python通用验证码识别OCR库ddddocr的安装使用教程 什么是ddddocr? ddddocr是一款Python编写的通用验证码识别OCR库,可以识别多种类型的验证码,具有高识别率和易用性。可以帮助我们方便快捷地实现验证码识别的功能。 如何安装ddddo…

    python 2023年5月18日
    00
  • python如何使用contextvars模块源码分析

    下面是详细的Python如何使用contextvars模块源码分析攻略。 1. 翻阅文档 首先,我们需要查阅Python的官方文档,了解contextvars模块的基本用法和重要概念。同时,我们要熟悉与contextvars相关的其他模块和函数,如 asyncio, inspect 和 threading 等。 可以在 Python 官方文档中查阅 cont…

    python 2023年6月3日
    00
  • Python数据结构与算法中的栈详解(1)

    当我写“Python数据结构与算法中的栈详解(1)”这篇文章时,我遵循了以下几个步骤: 1. 确定目标读者 在为网站编写文章之前,我们应该确定我们想要吸引的目标读者是谁。因此,在为这篇文章的编写时,我明确了以下目标读者:熟悉Python编程语言的初学者和具有Python编程经验的开发人员,他们想要深入了解Python中的栈数据结构。 2. 介绍栈数据结构的基…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部