重庆做网站建设,网站建设与设计ppt模板下载,如何使用模板建设网站,西宁市建设网站公司Python 爬虫入门#xff08;七#xff09;#xff1a;requests 库的使用「详细介绍」 前言1. 初识 requests1.1 安装 requests 库1.2 发送 GET 请求1.3 发送 POST 请求 2. HTTP 请求详解2.1 请求方法2.2 请求头2.3 请求参数 3. 处理响应3.1 响应内容3.2 响应状态码3.3 响应头… Python 爬虫入门七requests 库的使用「详细介绍」 前言1. 初识 requests1.1 安装 requests 库1.2 发送 GET 请求1.3 发送 POST 请求 2. HTTP 请求详解2.1 请求方法2.2 请求头2.3 请求参数 3. 处理响应3.1 响应内容3.2 响应状态码3.3 响应头 4. 会话保持5. SSL 证书验证6. 使用代理7. 文件上传与下载7.1 文件上传7.2 文件下载 8. 处理复杂的网页9. 实战项目抓取数据9.1 项目需求9.2 项目步骤9.3 示例代码总结 前言 欢迎来到“Python 爬虫入门”系列的第七篇文章。本篇文章将详细介绍如何使用 requests 库进行网络请求包括发送各种类型的 HTTP 请求、处理响应、会话保持、SSL 证书验证、代理设置、文件上传与下载等内容。 在本篇文章的代码示例中我将使用https://jsonplaceholder.typicode.com 网站的数据这是一个提供假数据的免费 REST API 服务的网站。这个服务由 JSON Server 和 LowDB 支持每月提供约30亿次请求。它被称为 “JSONPlaceholder”常用于测试和原型设计。 requests 库是 Python 中最流行的 HTTP 库之一因其简单易用和功能强大而广受欢迎。如果你是一个爬虫开发新手本篇文章将帮助你全面掌握 requests库的用法从而提升你的爬虫开发技能。 1. 初识 requests
1.1 安装 requests 库
首先确保你已经安装了 requests 库。如果没有安装可以使用以下命令安装
pip install requests1.2 发送 GET 请求
我们先从最基本的 GET 请求开始。
import requests# 发送 GET 请求
response requests.get(https://jsonplaceholder.typicode.com/posts)
print(response.status_code) # 输出状态码
print(response.json()) # 输出响应内容上面的代码向 https://jsonplaceholder.typicode.com/posts 发送了一个 GET 请求并打印出响应的状态码和内容。
1.3 发送 POST 请求
接下来我们来发送一个 POST 请求。
import requests# 发送 POST 请求
data {title: foo,body: bar,userId: 1
}
response requests.post(https://jsonplaceholder.typicode.com/posts, jsondata)
print(response.status_code) # 输出状态码
print(response.json()) # 输出响应内容在这个例子中我们向 https://jsonplaceholder.typicode.com/posts 发送了一个 POST 请求并附带了一些数据。
2. HTTP 请求详解
2.1 请求方法
requests 库支持多种 HTTP 请求方法包括 GET、POST、PUT、DELETE、HEAD、OPTIONS 等。
import requests# 发送 PUT 请求
data {id: 1,title: foo,body: bar,userId: 1
}
response requests.put(https://jsonplaceholder.typicode.com/posts/1, jsondata)
print(response.status_code) # 输出状态码
print(response.json()) # 输出响应内容发送 PUT 请求执行结果如下
import requests# 发送 DELETE 请求
response requests.delete(https://jsonplaceholder.typicode.com/posts/1)
print(response.status_code) # 输出状态码发送 DELETE 请求执行结果如下
2.2 请求头
有时候我们需要在请求中添加一些头信息例如 User-Agent、Content-Type 等。
import requests# 添加请求头
headers {User-Agent: Mozilla/5.0,Content-Type: application/json
}
response requests.get(https://jsonplaceholder.typicode.com/posts, headersheaders)
print(response.status_code) # 输出状态码
print(response.json()) # 输出响应内容2.3 请求参数
我们可以通过 URL 参数来传递数据。
import requests# 添加请求参数
params {userId: 1
}
response requests.get(https://jsonplaceholder.typicode.com/posts, paramsparams)
print(response.status_code) # 输出状态码
print(response.json()) # 输出响应内容执行结果如下
3. 处理响应
3.1 响应内容
响应内容可以是 JSON、文本、二进制数据等。
import requestsresponse requests.get(https://jsonplaceholder.typicode.com/posts/1)# 获取响应内容
print(response.text) # 以字符串形式输出
print(response.json()) # 以 JSON 形式输出
print(response.content) # 以二进制形式输出执行结果如下
3.2 响应状态码
我们可以通过响应对象的 status_code 属性来获取状态码。
3.3 响应头
响应头包含了很多有用的信息例如服务器类型、内容类型等。
import requestsresponse requests.get(https://jsonplaceholder.typicode.com/posts/1)
print(response.headers)执行结果如下
4. 会话保持
使用 requests 库的会话对象可以在多个请求之间保持某些参数。
import requests# 创建会话对象
session requests.Session()# 设置会话级别的请求头
session.headers.update({User-Agent: Mozilla/5.0})# 发送请求
response session.get(https://jsonplaceholder.typicode.com/posts)
print(response.status_code)
print(response.json())5. SSL 证书验证
requests 库默认会验证 SSL 证书。你可以通过 verify 参数来控制这一行为。
import requests# 禁用 SSL 证书验证
response requests.get(https://jsonplaceholder.typicode.com/posts, verifyFalse)
print(response.status_code)执行结果如下
6. 使用代理
在爬虫开发中使用代理可以帮助我们隐藏真实的 IP 地址。
import requestsproxies {http: http://10.10.10.10:8000,https: http://10.10.10.10:8000
}response requests.get(https://jsonplaceholder.typicode.com/posts, proxiesproxies)
print(response.status_code)7. 文件上传与下载
7.1 文件上传
我们可以使用 requests 库轻松地上传文件。
import requests# 文件上传
files {file: open(example.txt, rb)}
response requests.post(https://jsonplaceholder.typicode.com/posts, filesfiles)
print(response.status_code)
print(response.json())7.2 文件下载
同样地我们也可以下载文件。
import requestsresponse requests.get(https://jsonplaceholder.typicode.com/photos/1, streamTrue)
with open(photo.jpg, wb) as file:for chunk in response.iter_content(chunk_size128):file.write(chunk)
print(文件下载完成)8. 处理复杂的网页
对于一些复杂的网页我们可能需要处理 JavaScript 动态加载的内容。这时可以结合 requests 和 BeautifulSoup 库来实现。
import requests
from bs4 import BeautifulSoupresponse requests.get(https://jsonplaceholder.typicode.com/)
soup BeautifulSoup(response.text, html.parser)# 提取标题
titles soup.find_all(title)
for title in titles:print(title.text)执行结果如下
9. 实战项目抓取数据
接下来我们将结合前面所学的内容编写一个完整的爬虫项目从网站中抓取数据并保存到 CSV 文件中。
9.1 项目需求
从 https://jsonplaceholder.typicode.com/posts 提取标题和链接。将数据保存到 CSV 文件中。
9.2 项目步骤
发送请求并获取响应。解析响应内容。保存数据到 CSV 文件。
9.3 示例代码
import requests
import csvdef fetch(url):response requests.get(url)if response.status_code 200:data []posts response.json()for post in posts:title post[title]link fhttps://jsonplaceholder.typicode.com/posts/{post[id]}data.append([title, link])return dataelse:print(请求失败状态码, response.status_code)return []def save_to_csv(data, filename):with open(filename, w, newline, encodingutf-8) as file:writer csv.writer(file)writer.writerow([Title, Link])writer.writerows(data)if __name__ __main__:url https://jsonplaceholder.typicode.com/postsdata fetch(url)if data:save_to_csv(data, datas.csv)print(数据已保存到 datas.csv)总结
通过本篇文章的学习相信小伙伴们已经掌握了 requests 库的基本用法涵盖了发送各种请求、处理响应、会话保持、SSL 证书验证、代理设置、文件上传与下载等内容。