【Python网络爬虫笔记】6- 网络爬虫中的Requests库

一、概述

Requests 是一个用 Python 语言编写的、简洁且功能强大的 HTTP 库。它允许开发者方便地发送各种 HTTP 请求,如 GET、POST、PUT、DELETE 等,并且可以轻松地处理请求的响应。这个库在 Python 生态系统中被广泛使用,无论是简单的网页数据获取,还是复杂的网络服务交互场景都能发挥作用。

二、在网络爬虫中的作用

1.发送请求

  • 简单请求发送:在网络爬虫中,最常见的操作是获取网页内容。使用requests.get()方法可以轻松地向目标网址发送GET请求。例如,如果想要获取某个新闻网站的首页内容,可以这样写:
python 复制代码
import requests
response = requests.get('https://news.example.com')
print(response.text)
  • 带参数请求:对于一些需要传递参数的网页,如搜索结果页面,requests库可以通过params参数来构建带有查询参数的GET请求。假设要在一个电商网站上搜索特定商品,代码可以这样写:
python 复制代码
import requests
params = {'keyword': 'laptop'}
response = requests.get('https://ecommerce.example.com/search', params = params)
print(response.url)  
print(response.text)

这样就可以获取到包含 "laptop" 关键词的搜索结果页面内容。

2.处理响应

  • 状态码检查:在网络爬虫中,需要检查请求是否成功。requests库返回的响应对象有一个status_code属性,可以用来判断请求的状态。例如,200表示请求成功,404表示页面未找到。
python 复制代码
import requests
response = requests.get('https://news.example.com')
if response.status_code == 200:
    print("请求成功")
else:
    print("请求出现问题,状态码:", response.status_code)
  • 获取内容:可以通过response.text属性获取网页的文本内容(例如 HTML 代码),用于后续的解析工作。如果网页返回的是二进制数据(如图片、文件等),可以使用response.content属性获取字节流数据。

3. 模拟浏览器行为

  • 很多网站会根据请求头中的User - Agent等信息来判断请求是否来自合法的浏览器。requests库可以通过设置headers参数来模拟浏览器发送请求。
python 复制代码
import requests
headers = {'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko)Chrome/91.0.4472.124 Safari/537.36'}
response = requests.get('https://news.example.com', headers = headers)
print(response.text)

这样就可以让服务器认为请求是来自浏览器,从而避免一些因为请求被识别为非浏览器请求而导致的访问限制。

详见案例:抓取豆瓣电影数据:
https://blog.csdn.net/zi__you/article/details/144144052?fromshare=blogdetail&sharetype=blogdetail&sharerId=144144052&sharerefer=PC&sharesource=zi__you&sharefrom=from_link

相关推荐
nbsaas-boot22 分钟前
Java 正则表达式白皮书:语法详解、工程实践与常用表达式库
开发语言·python·mysql
仗剑_走天涯25 分钟前
基于pytorch.nn模块实现线性模型
人工智能·pytorch·python·深度学习
chao_78926 分钟前
二分查找篇——搜索旋转排序数组【LeetCode】两次二分查找
开发语言·数据结构·python·算法·leetcode
陈洪奇1 小时前
注册中心学习笔记整理
笔记·学习
兴趣使然_4 小时前
【笔记】使用 html 创建网址快捷方式
笔记·html·js
chao_7895 小时前
二分查找篇——搜索旋转排序数组【LeetCode】一次二分查找
数据结构·python·算法·leetcode·二分查找
烛阴5 小时前
Python装饰器解除:如何让被装饰的函数重获自由?
前端·python
aramae6 小时前
C++ -- STL -- vector
开发语言·c++·笔记·后端·visual studio
noravinsc6 小时前
django 一个表中包括id和parentid,如何通过parentid找到全部父爷id
python·django·sqlite
ajassi20006 小时前
开源 python 应用 开发(三)python语法介绍
linux·python·开源·自动化