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 获取list特定元素下标的实例讲解

    以下是详细讲解“Python获取List特定元素下标的实例讲解”的完整攻略。 在Python中,可以使用index()函数获取List中特定元素的下标。本文将对这个函数进行详细讲解提供一些示例说明。 使用index()函数获取List中特定素的下标 在Python中,可以使用index()函数获取List中特元素的下标。其语法如下: list.index(x…

    python 2023年5月13日
    00
  • 如何在Python中隐藏和加密密码示例详解

    【如何在Python中隐藏和加密密码示例详解】 1. 为何需要隐藏和加密密码 在开发应用程序时,我们往往需要用户提交用户名和密码等敏感信息。但是,如果这些信息直接以明文的形式保存在代码中或者存储在数据文件中,就会存在泄露的风险。因此,我们需要将密码隐藏或加密,以保证用户的隐私安全。 2. 如何隐藏密码 隐藏密码可以通过编写配置文件、环境变量或者存储在数据库等…

    python 2023年5月20日
    00
  • Python使用百度api做人脸对比的方法

    下面我将为你详细讲解“Python使用百度api做人脸对比的方法”的完整攻略。 1. 准备工作 首先需要在百度AI开放平台注册账号,并申请到人脸识别服务。获取到应用的APP ID、API Key、Secret Key三个参数,以下用APP_ID、API_KEY、SECRET_KEY表示。 接着需要安装Python SDK和相关依赖,在命令行中运行以下命令即可…

    python 2023年6月6日
    00
  • Python自定义主从分布式架构实例分析

    Python自定义主从分布式架构实例分析 介绍 分布式架构是大规模系统的一种设计模式,由多个独立计算机节点组成,各节点之间进行通讯和协作,并共同解决一个问题。本文将讲解Python实现自定义主从分布式架构的完整攻略,包含以下内容: 主从分布式架构原理 服务端代码实现 客户端代码实现 示例说明 主从分布式架构原理 主从分布式架构是指有一个或多个主服务器节点,其…

    python 2023年6月7日
    00
  • 浅谈python 调用open()打开文件时路径出错的原因

    请看以下完整攻略: 浅谈python调用open()打开文件时路径出错的原因 引言 在使用Python语言操作文件时,常用的函数之一就是open()函数。但是,有时候我们调用open()函数打开文件时会出现路径出错的问题。这也是初学者经常遇到的一个问题。本篇攻略旨在帮助初学者快速定位和解决该问题。 原因分析 出现路径出错的原因有多种,总结如下: 绝对路径和相…

    python 2023年5月13日
    00
  • 详解Python3 中的字符串格式化语法

    当我们想要将某些数据以特殊的格式输出到屏幕或者文件中时,字符串格式化技术就变得非常有用。Python3中可以使用多种方法进行字符串格式化,其中最常见的方式是使用字符串格式化语法。下面将介绍Python3中的字符串格式化语法并给出两个示例说明。 字符串格式化语法 在Python3中,我们使用字符串格式化语法,将字符串中的花括号{}替换为想要输出的内容。字符串格…

    python 2023年6月5日
    00
  • Python开发企业微信机器人每天定时发消息实例

    以下是Python开发企业微信机器人每天定时发消息的完整攻略。 一、准备工作 获取企业微信机器人的webhook地址,可以通过企业微信管理后台->应用管理->自建应用->基本信息->Webhook中获取。此处以https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXXXXXX-X…

    python 2023年5月23日
    00
  • 详解Python3之数据指纹MD5校验与对比

    详解Python3之数据指纹MD5校验与对比 什么是数据指纹? 在计算机科学及相关领域中,数据指纹(也称数据摘要)是一种数据压缩技术,通常用于数字签名、消息认证代码(MAC),那些需要同时变更和存储一致性保证的应用中。 数据指纹能够对任意大小的数据生成一个固定大小的唯一“指纹”,该指纹通常由单向散列函数计算而来,常见的单向散列函数包括MD5和SHA1等。 在…

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