摘要:在互联网信息爆炸的时代,如何快速获取并分析所需的数据?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#库 #大数据##为什么要努力学习,为什么要读书##万能生活指南#
来源:绿叶菜