python : Requests请求库入门使用指南 + 简单爬取豆瓣影评

本文主要是介绍python : Requests请求库入门使用指南 + 简单爬取豆瓣影评,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Requests 是一个用于发送 HTTP 请求的简单易用的 Python 库。它能够处理多种 HTTP 请求方法,如 GET、POST、PUT、DELETE 等,并简化了 HTTP 请求流程。对于想要进行网络爬虫或 API 调用的开发者来说,Requests 是一个非常有用的工具。在今天的博客中,我将介绍 Requests 的基本用法,并提供一个合理的爬虫实例。

一.安装 Requests

在使用 Requests 库之前,您需要安装它。可以通过 pip 命令来安装:

pip install requests

在国内安装的速度很慢,所以我们可以修改为国内镜像源安装比如说清华大学镜像源:

pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

你也可以选择其他镜像源,如阿里云、华为云等,替换 -i 参数后的 URL。

二.基本用法

Requests 提供了简单的接口来处理 HTTP 请求和响应。我们将从最基本的 GET 请求和 POST 请求开始。

1.GET 请求

GET 请求用于从服务器获取数据。可以通过 ' requests.get() ' 方法来实现。以下是一个简单的例子,通过get请求豆瓣影评:

import requests# 发送GET请求
response = requests.get('https://movie.douban.com/review/best/')print(response.status_code)  # 输出状态码
print(response.text)         # 输出响应内容

当然由于豆瓣有简单的反爬虫设置,所以我们这样直接发送请求很容易就会被网站限制,不要轻易尝试。

2.POST 请求

POST 请求用于向服务器发送数据,通常用于提交表单或上传文件,可以通过 `requests.post()` 方法来实现。

import requestsdata = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data)
print(response.status_code)
print(response.json())  # 输出响应的 JSON 数据

三.处理响应

Requests 库提供了多种方法来处理 HTTP 响应:

response.text:以字符串形式获取响应内容。

response.json():以 JSON 格式解析响应内容。

response.content:以二进制形式获取响应内容。

response.status_code:获取 HTTP 状态码。

response.headers:获取响应头信息。

四.处理简单的反爬

添加请求头

通过设置请求头将requests库的请求伪装成浏览器请求:

import requestsheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)','Referer': 'https://www.example.com','Content-Type': 'application/json'
}
response = requests.get('https://api.example.com/data', headers=headers)

在许多情况下,自定义请求头是必需的。大多数网站至少都会有简单的爬虫检测,虽然这样只能应付最简单的反爬策略,但是也是最常用的伪装方法了。

五.爬虫实例

下面是一个简单的爬虫实例,使用 Requests 库从豆瓣网爬取影评的标题和简介:

import re
import requests# 定义要爬取的URL
url = 'https://movie.douban.com/review/best/'# 设置请求头部,以模拟浏览器访问
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ""Chrome/127.0.0.0 Safari/537.36"
}# 发送HTTP GET请求以获取网页内容
response = requests.get(url, headers=headers)# 提取响应的HTML内容
con = response.text# 初始化存储数据的容器
title_datas = []
synopsis_datas = []# 使用正则表达式提取评论标题
titles = re.findall('<h2><a href="https://movie.douban.com/review/.*?">(.*?)</a></h2>', con)
for title in titles:title_datas.append(title)  # 将标题添加到标题列表中# 使用正则表达式提取评论内容
datas = re.findall('''<div id=".*?" class=".*?" data-rid=".*?"><div class="short-content">.*?(.*?)\n&nbsp;\(<a href="javascript:;" id=".*?" class="unfold" title="展开">展开</a>\)</div></div>''', con, re.S)# 清理提取的评论内容
for data in datas:# 移除HTML标签clean_data = re.sub(r'<p .*?>.*?</p>', '', data)# 将多个空白字符替换为单个空格,并去除前后的空白clean_data = re.sub(r'\s+', ' ', clean_data).strip()synopsis_datas.append(clean_data)  # 将清理后的评论内容添加到列表中# 将标题和评论内容配对存储到字典中
items = {}
for i in range(len(title_datas)):items[title_datas[i]] = synopsis_datas[i]# 打印结果
print(items)

导入库

import re:用于处理正则表达式。

import requests:用于发送HTTP请求并获取网页内容。

定义URL和请求头

url:目标网页的地址。

headers:模拟浏览器请求的头部信息,防止被网站屏蔽。

发送请求并获取网页内容

requests.get(url, headers=headers):发送GET请求获取网页数据。

response.text:获取响应的HTML文本内容。

初始化数据存储容器

title_datas:存储提取的评论标题。

synopsis_datas:存储提取的评论内容。

提取评论标题

re.findall:使用正则表达式提取标题。

将标题添加到 title_datas 列表中。

提取评论内容

re.findall:使用正则表达式提取评论内容。

re.sub:移除HTML标签并清理多余空白。

配对标题和评论内容

使用 for 循环将标题和内容配对,并存储在 items 字典中。

打印结果

输出字典 items,显示标题和评论内容的配对结果。

当然这里的实例写的并不是很好,只能给大家提供一个参考,大家爬取数据还是要基于网页分析,编写代码。

六.结论

注意事项:

  1. 遵守 robots.txt:在爬取任何网站之前,检查其 robots.txt 文件,确保你的爬虫行为符合网站的爬虫协议。
  2. 频率控制:不要过于频繁地访问目标网站,以免对服务器造成负担。可以通过 time.sleep() 控制请求频率。
  3. 异常处理:在编写爬虫时,考虑到网络请求可能会失败,建议添加异常处理机制来保证程序的健壮性。

Requests 是一个功能强大且易于使用的库,适用于各种 HTTP 请求操作。通过灵活设置请求头和使用不同的请求方法,我们可以轻松实现复杂的网络请求任务。使用 Requests 库进行网络请求和数据抓取是一个强大且简单的方式。掌握其基础用法后,可以更高效地进行 API 调用和网页数据抓取。

这篇关于python : Requests请求库入门使用指南 + 简单爬取豆瓣影评的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091860

相关文章

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

python常用的正则表达式及作用

《python常用的正则表达式及作用》正则表达式是处理字符串的强大工具,Python通过re模块提供正则表达式支持,本文给大家介绍python常用的正则表达式及作用详解,感兴趣的朋友跟随小编一起看看吧... 目录python常用正则表达式及作用基本匹配模式常用正则表达式示例常用量词边界匹配分组和捕获常用re

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧