Python Requests爬虫从入门到实战:手把手教你抓取网络数据

B站影视 欧美电影 2025-06-17 16:19 1

摘要:在互联网信息爆炸的时代,如何快速获取并分析所需的数据?Python 爬虫就是你的神兵利器!其中,Requests 库凭借其简洁易用、功能强大的特点,成为了爬虫初学者的首选工具。本文将从基础到实战,带你轻松掌握 Requests 爬虫,解锁数据抓取的无限可能!

在互联网信息爆炸的时代,如何快速获取并分析所需的数据?Python 爬虫就是你的神兵利器!其中,Requests 库凭借其简洁易用、功能强大的特点,成为了爬虫初学者的首选工具。本文将从基础到实战,带你轻松掌握 Requests 爬虫,解锁数据抓取的无限可能!

Requests 是 Python 中用于发送 HTTP 请求的第三方库,它完全满足 HTTP 协议的所有标准,支持 GET、POST、PUT、DELETE 等多种请求方式,还能处理 Cookie、代理、认证等复杂场景。相比 Python 内置的 urllib 库,Requests 的代码更加简洁直观,即使是编程小白也能快速上手。

安装Requests库

在开始之前,确保你已经安装了 Python(建议使用 Python 3.6 及以上版本)。使用 pip 命令即可轻松安装 Requests:

pip install requests

1. 发送GET请求

发送 GET 请求获取网页内容是爬虫最常见的操作之一。以获取豆瓣电影 Top250 页面为例:

import requests

url = "https://movie.douban.com/top250"

response = requests.get(url)

# 检查响应状态码,200表示请求成功

if response.status_code == 200:

# 设置响应的编码,避免中文乱码

response.encoding = 'utf-8'

print(response.text)

else:

print(f"请求失败,状态码:{response.status_code}")

在这段代码中:

• Requests.get(url) 发送 GET 请求,并将响应结果存储在 response 对象中。

• response.status_code 用于获取响应状态码。

• response.text 获取响应的文本内容(即网页源代码)。

• response.encoding 设置正确的编码格式,确保中文正常显示。

2. 发送POST请求

当需要向服务器提交数据(如登录表单、搜索条件)时,就需要使用 POST 请求。假设我们有一个模拟的登录接口 https://example.com/login,需要提交用户名和密码:

import requests

url = "https://example.com/login"

data = {

"username": "your_username",

"password": "your_password"

}

response = requests.post(url, data=data)

if response.status_code == 200:

print(response.text)

else:

print(f"请求失败,状态码:{response.status_code}")

这里的 data 参数是一个字典,包含了需要提交的数据。

1. 添加请求头(Headers)

很多网站会通过检测请求头来识别是否为爬虫。为了模拟浏览器访问,我们需要添加请求头信息,如 User-Agent:

import requests

url = "https://movie.douban.com/top250"

headers = {

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"

}

response = requests.get(url, headers=headers)

if response.status_code == 200:

response.encoding = 'utf-8'

print(response.text)

else:

print(f"请求失败,状态码:{response.status_code}")

通过伪装成浏览器的 User-Agent,可以提高请求的成功率。

2. 使用代理IP

当频繁访问网站时,可能会因为 IP 被封禁而无法继续抓取。这时可以使用代理 IP 来隐藏真实 IP:

import requests

url = "https://movie.douban.com/top250"

proxies = {

"http": "http://your_proxy_ip:port",

"https": "https://your_proxy_ip:port"

}

response = requests.get(url, proxies=proxies)

if response.status_code == 200:

response.encoding = 'utf-8'

print(response.text)

else:

print(f"请求失败,状态码:{response.status_code}")

你可以从代理 IP 提供商(如西刺代理、快代理)获取可用的代理 IP。

3. 处理Cookie

有些网站需要登录后才能访问数据,这就需要处理 Cookie。Requests 库可以自动处理 Cookie,也可以手动设置:

import requests

url = "https://example.com/login"

data = {

"username": "your_username",

"password": "your_password"

}

session = requests.Session

response = session.post(url, data=data)

# 登录成功后,使用同一个session访问其他页面

new_url = "https://example.com/profile"

new_response = session.get(new_url)

if new_response.status_code == 200:

print(new_response.text)

else:

print(f"请求失败,状态码:{new_response.status_code}")

requests.Session 可以保持会话状态,自动携带登录后的 Cookie。

现在,我们将综合运用以上知识,抓取豆瓣电影 Top250 的电影名称、评分和评价人数:

import requests

from bs4 import BeautifulSoup

url = "https://movie.douban.com/top250"

headers = {

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"

}

response = requests.get(url, headers=headers)

if response.status_code == 200:

response.encoding = 'utf-8'

soup = BeautifulSoup(response.text, 'html.parser')

movie_list = soup.find_all('div', class_="item")

for movie in movie_list:

title = movie.find('span', class_="title").text

rating = movie.find('span', class_="rating_num").text

num_comments = movie.find('span', class_="pl").text.strip('人评价')

print(f"电影名称:{title},评分:{rating},评价人数:{num_comments}")

else:

print(f"请求失败,状态码:{response.status_code}")

这里使用了 BeautifulSoup 库来解析网页内容,提取所需的数据。如果需要抓取更多页数据,只需修改 URL 中的页码参数即可。

在使用爬虫时,一定要遵守法律法规和网站的使用条款:

1. 尊重网站的 robots.txt 文件:该文件规定了网站允许或禁止爬虫抓取的内容。

2. 避免过度请求:控制抓取频率,防止对目标网站造成过大压力。

3. 数据使用合法:抓取的数据仅用于学习、研究或个人用途,未经授权不得商用。

通过本文的学习,你已经掌握了 Requests 库的基础使用和进阶技巧,并完成了一个实战案例。爬虫是一个不断探索和学习的领域,推荐以下资源帮助你深入学习:

• 书籍:《Python 网络数据采集》《精通 Python 网络爬虫》

• 官方文档:Requests 官方文档

如果你在学习过程中遇到问题,欢迎在评论区留言交流!觉得文章有用的话,别忘了点赞、收藏并分享给更多小伙伴~

# #HttpWebRequest常用请求方式C#​库 #大数据##为什么要努力学习,为什么要读书##万能生活指南#

来源:绿叶菜

相关推荐