本文涉及的主要知识点如下:
- WEB 是如何交互的;
- requests 库的 get、post 函数的应用;
- response 对象的相关函数及其属性。
环境:Python3.6 + Pycharm
库:requests
小编在本文中代码都已给出了详细注释,并且可直接运行。
首先,屏幕前的小伙伴们需要先安装 requests 库,安装之前需先安装好 Python 环境,如未安装,小编在这给小伙伴们提供最新的 Python 编译器安装教程:Python 最新 3.9.0 编译器安装教程。
安装好 Python 环境后,windows 用户打开 cmd 命令输入以下命令即可(其余系统安装大致相同)。
pip install requests
Linux 用户:
sudo pip install requests
接下来就是实例讲解啦,小伙伴们多多动手操练呐!
1、爬取百度首页页面,并获取页面信息
实例
# 爬取百度页面
import requests #导入requests爬虫库
resp = requests.get('http://www.baidu.com') #生成一个response对象
resp.encoding = 'utf-8' #设置编码格式为 utf-8
print(resp.status_code) #打印状态码
print(resp.text) #输出爬取的信息
2、requests 库 get 方法实例
在此之前先给大家介绍一个网址:httpbin.org,这个网站能测试 HTTP 请求和响应的各种信息,比如 cookie、ip、headers 和登录验证等,且支持 GET、POST 等多种方法,对 web 开发和测试很有帮助。它用 Python + Flask 编写,是一个开源项目。
官方网站:http://httpbin.org/
开源地址:https://github.com/Runscope/httpbin
实例
# get方法实例
import requests #导入requests爬虫库
resp5、爬取网页图片,并保存到本地。5、爬取网页图片,并保存到本地。 = requests.get("http://httpbin.org/get") #get方法
print( resp.status_code ) #打印状态码
print( resp.text ) #输出爬取的信息
3、requests 库 post 方法实例
实例
# post方法实例
import requests #导入requests爬虫库
resp = requests.post("http://httpbin.org/post") #post方法
print( resp.status_code ) #打印状态码
print( resp.text ) #输出爬取的信息
4、requests库 put 方法实例
实例
# put方法实例
import requests #导入requests爬虫库
resp = requests.put("http://httpbin.org/put") # put方法
print( resp.status_code ) #打印状态码
print( resp.text ) #输出爬取的信息
5、requests 库 get 方法传参
想要使用 get 方法传递参数,有两种方法可行:
- 在 get 方法之后加上要传递的参数用“=”号链接并用“&”符号隔开;
- 使用 params 字典传递多个参数。实例如下:
实例
# get传参方法实例1
import requests #导入requests爬虫库
resp = requests.get("http://httpbin.org/get?name=w3cschool&age=100") # get传参
print( resp.status_code ) #打印状态码
print( resp.text ) #输出爬取的信息
实例
# get传参方法实例2
import requests #导入requests爬虫库
data = {
"name":"w3cschool",
"age":100
} #使用字典存储传递参数
resp = requests.get( "http://httpbin.org/get" , params=data ) # get传参
print( resp.status_code ) #打印状态码
print( resp.text ) #输出爬取的信息
6、requests 库 post 方法传参
使用 post 方法传递参数和使用 get 方法传递参数的方法二是类似的。实例如下:
实例
# post传参方法实例
import requests #导入requests爬虫库
data = {
"name":"w3cschool",
"age":100
} #使用字典存储传递参数
resp = requests.post( "http://httpbin.org/post" , params=data ) # post传参
print( resp.status_code ) #打印状态码
print( resp.text ) #输出爬取的信息
7、如何绕过各大网站的反爬虫措施,以猫眼票房为例:
实例
import requests #导入requests爬虫库
url = 'http://piaofang.maoyan.com/dashboard' #猫眼票房网址地址
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
} #设置头部信息,伪装浏览器
resp = requests.get(url, headers=headers) #
print(resp.status_code) #打印状态码
print(resp.text) #网页信息
8、爬取网页图片,并保存到本地。
先在E盘建立一个爬虫目录,才能够保存信息,小伙伴们可自行选择目录保存,在代码中更改相应目录代码即可。
实例
import requests #导入requests爬虫库
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
} #设置头部信息,伪装浏览器
resp = requests.get('http://7n.w3cschool.cn/statics/img/logo/indexlogo@2x.png', headers = headers) #get方法的到图片响应
file = open("E:\\爬虫\\test.png","wb") #打开一个文件,wb表示以二进制格式打开一个文件只用于写入
file.write(resp.content) #写入文件
file.close() #关闭文件操作
学以致用,希望屏幕前的小伙伴们能够多多联系,结合实际多加操作。推荐阅读:Python 静态爬虫、Python Scrapy网络爬虫。