Python爬虫实战:10个requests库基础操作与反爬技巧
本文通过10个Python爬虫实例,详解requests库的get、post、put方法及其传参技巧。内容涵盖环境安装、响应对象处理、编码设置、文件保存及图片抓取,并演示如何通过修改User-Agent绕过知乎的反爬机制,适合初学者快速掌握网络数据采集基础。
Python爬虫入门概述
昨日与初学者共同学习了Python爬虫技术,并准备了若干基础入门案例供参考。
这些案例主要涉及以下核心知识点:
- Web交互的基本原理
- requests库中get与post函数的具体应用
- response对象的相关函数与属性使用
- Python文件的打开、读写与保存操作
代码中已添加详细注释,确保可以直接运行测试。
requests库安装指南
关于requests库的安装方法(已配置Python环境的用户可直接参考,未安装Python环境的用户建议先完成Python环境搭建)。
Windows与Linux用户的安装步骤基本一致:
在Windows系统中,打开cmd命令行输入相应命令即可。若Python安装在C盘目录导致权限不足,请以管理员身份运行cmd窗口。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
Linux用户(以Ubuntu为例)操作类似,若遇到权限不足,可在命令前添加sudo执行。
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
基础HTTP请求方法演示
实例1:爬取百度首页并打印页面信息。
# 第一个爬虫示例,爬取百度页面
import requests #导入爬虫的库,不然调用不了爬虫的函数
response = requests.get("http://www.baidu.com") #生成一个response对象
response.encoding = response.apparent_encoding #设置编码格式
print("状态码:"+ str( response.status_code ) ) #打印状态码
print(response.text)#输出爬取的信息
实例2:展示常用的get方法,后续包含传参示例。
# 第二个get方法实例
import requests #先导入爬虫的库,不然调用不了爬虫的函数
response = requests.get("http://httpbin.org/get") #get方法
print( response.status_code ) #状态码
print( response.text )
实例3:展示常用的post方法,后续包含传参示例。
# 第三个 post方法实例
import requests #先导入爬虫的库,不然调用不了爬虫的函数
response = requests.post("http://httpbin.org/post") #post方法访问
print( response.status_code ) #状态码
print( response.text )
实例4:展示put方法的使用。
# 第四个 put方法实例
import requests #先导入爬虫的库,不然调用不了爬虫的函数
response = requests.put("http://httpbin.org/put") # put方法访问
print( response.status_code ) #状态码
print( response.text )
GET与POST传参技巧
实例5:get方法传参示例(1)。
如需传递多个参数,可使用&符号连接,如下所示:
# 第五个 get传参方法实例
import requests #先导入爬虫的库,不然调用不了爬虫的函数
response = requests.get("http://httpbin.org/get?name=hezhi&age=20") # get传参
print( response.status_code ) #状态码
print( response.text )
实例6:get方法传参示例(2)。
使用字典形式的params参数可以更方便地传递多个值。
# 第六个 get传参方法实例
import requests #先导入爬虫的库,不然调用不了爬虫的函数
data = {
"name":"hezhi",
"age":20
}
response = requests.get( "http://httpbin.org/get" , params=data ) # get传参
print( response.status_code ) #状态码
print( response.text )
实例7:post方法传参示例(2),其结构与上一个示例相似。
# 第七个 post传参方法实例
import requests #先导入爬虫的库,不然调用不了爬虫的函数
data = {
"name":"hezhi",
"age":20
}
response = requests.post( "http://httpbin.org/post" , params=data ) # post传参
print( response.status_code ) #状态码
print( response.text )
反爬机制与数据保存实战
实例8:关于绕过反爬机制的演示,以知乎为例。
# 第好几个方法实例
import requests #先导入爬虫的库,不然调用不了爬虫的函数
response = requests.get( "http://www.zhihu.com") #第一次访问知乎,不设置头部信息
print( "第一次,不设头部信息,状态码:"+response.status_code )# 没写headers,不能正常爬取,状态码不是 200
#下面是可以正常爬取的区别,更改了User-Agent字段
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36"
}#设置头部信息,伪装浏览器
response = requests.get( "http://www.zhihu.com" , headers=headers ) #get方法访问,传入headers参数,
print( response.status_code ) # 200!访问成功的状态码
print( response.text )
实例9:抓取信息并保存至本地。由于目录限制,在D盘创建了名为“爬虫”的文件夹用于存储信息。
请注意文件保存时的encoding编码设置。
# 爬取一个html并保存
import requests
url = "http://www.baidu.com"
response = requests.get( url )
response.encoding = "utf-8" #设置接收编码格式
print("\nr的类型" + str( type(response) ) )
print("\n状态码是:" + str( response.status_code ) )
print("\n头部信息:" + str( response.headers ) )
print( "\n响应内容:" )
print( response.text )
#保存文件
file = open("D:\\爬虫\\baidu.html","w",encoding="utf") #打开一个文件,w是文件不存在则新建一个文件,这里不用wb是因为不用保存成二进制
file.write( response.text )
file.close()
实例10:抓取图片并保存至本地。
#保存百度图片到本地
import requests #先导入爬虫的库,不然调用不了爬虫的函数
response = requests.get("https://www.baidu.com/img/baidu_jgylogo3.gif") #get方法的到图片响应
file = open("D:\\爬虫\\baidu_logo.gif","wb") #打开一个文件,wb表示以二进制格式打开一个文件只用于写入
file.write(response.content) #写入文件
file.close()#关闭操作,运行完毕后去你的目录看一眼有没有保存成功
至此,关于10个Python爬虫入门实例的总结介绍完毕。如需了解更多Python爬虫相关内容,请搜索本站往期文章或继续浏览后续文章,感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









