python爬虫请求头的使用
作者:Klose_10 时间:2023-03-21 07:10:23
爬虫请求头
网页获取:
通过urlopen来进行获取
requset.urlopen(url,data,timeout)
第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。
第二三个参数是可以不传送的,data默认为空None,timeout默认为 socket._GLOBAL_DEFAULT_TIMEOUT
第一个参数URL是必须要加入的,执行urlopen方法之后,返回一个response对象,返回信息便保存在这里面
from urllib.request import urlopen
url = "https://www.baidu.com/"
respons = urlopen(url)#最简单的爬取情况这样爬取大部分网页无法爬取成功
response对象:
response.read()
read()方法就是读取文件里的全部内容,返回bytes类型
print(type(respons.read()))#结果为bytes类型所以需要进行转码
print(type(respons.read().decode()))#通过decode转码结果为str
response.getcode()
返回 HTTP的响应码,成功返回200,4服务器页面出错,5服务器问题
response.geturl()
返回 返回实际数据的实际URL,防止重定向问题
response.info()
返回 服务器响应的HTTP报头
Request对象
Request对象,由于urlopen参数可以传入一个request请求(可以理解成为再加一步封装的功能)因为在构建请求时还需要加入好多内容,通过构建一个request,服务器响应请求得到应答,这样显得逻辑上清晰明确
from urllib.request import urlopen,Request
from fake_useragent import UserAgent#这个包可以随机生成User-Agent
url = "https://www.baidu.com/"
headers = {"User-Agent":UserAgent().firefox}#生成火狐的
request = Request(url,headers=headers)
response = urlopen(request)
a=response.read().decode()
Get请求
浏览器通过GET方法发出请求
爬虫主要通过get再url中加入请求的参数,由于中文的需要转码通过
Urllib.parse.urlencode() 针对多个参数进行转码操作输入格式为字典类型
Urllib.parse.quote() 针对单个字符串进行转码操作
Str格式.format( ) 用于拼接字符串
post请求
一般在需要登录的地方用的比较多
需要在request请求中加如一个data用来传入参数
参数的形式要以字典格式通过urllib.parse.urlencode()进行转换成字符串形式
再通过encode()函数对字符串进行转码(默认值就可以)
发送请求/响应header头的含义
名称 | 含义 |
---|---|
Accept | 告诉服务器,客户端支持的数据类型 |
Accept-Charset | 告诉服务器,客户端采用的编码 |
Accept-Encoding | 告诉服务器,客户机支持的数据压缩格式 |
Accept-Language | 告诉服务器,客户机的语言环境 |
Host | 客户机通过这个头告诉服务器,想访问的主机名 |
If-Modified-Since | 客户机通过这个头告诉服务器,资源的缓存时间 |
Referer | 客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的。(一般用于防盗链) |
User-Agent | 客户机通过这个头告诉服务器,客户机的软件环境 |
Cookie | 客户机通过这个头告诉服务器,可以向服务器带数据 |
Refresh | 服务器通过这个头,告诉浏览器隔多长时间刷新一次 |
Content-Type | 服务器通过这个头,回送数据的类型 |
Content-Language | 服务器通过这个头,告诉服务器的语言环境 |
Server | 服务器通过这个头,告诉浏览器服务器的类型 |
Content-Encoding | 服务器通过这个头,告诉浏览器数据采用的压缩格式 |
Content-Length | 服务器通过这个头,告诉浏览器回送数据的长度 |
Ajax请求
用于提取动态的页面 网页数据根据拖动进行显示
通过浏览器工具箱,查找包的信息,找到url的规律进行爬取
如果无法知道要循环多少次则规定一个死循环,爬取页面为空时停止循环
也可以通过改变url一次性输出更多的网页信息(只要服务器允许)
https请求
因为在有些浏览器中存在很多证书所以在大部分网页爬取的时候不用改变证书或者添加证书但有些自己写证书的网站需要进行这一步操作
https请求=在http上加ssl,http请求是明文直接可以看见,为了安全要加上ssl
可以选择忽略证书进行爬取 context = ssl._create_unverified_context()
来源:https://blog.csdn.net/Klose_10/article/details/108924084
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Python实现将Excel内容插入到Word模版中
![](https://img.aspxhome.com/file/2023/3/130983_0s.png)
mysql利用覆盖索引避免回表优化查询
![](https://img.aspxhome.com/file/2023/1/118191_0s.jpg)
深入理解javascript中defer的作用
13个你希望早点知道的实用WordPress SQL查询语句[译]
![](https://img.aspxhome.com/file/UploadPic/20102/28/sqlbox-14s.jpg)
Python matplotlib生成图片背景透明的示例代码
![](https://img.aspxhome.com/file/2023/2/81472_0s.png)
柳永法:vbs或asp采集文章时网页编码问题
选择什么样的DOCTYPE
Mysql的服务无法启动的1067错误解决
Win10下安装CUDA11.0+CUDNN8.0+tensorflow-gpu2.4.1+pytorch1.7.0+paddlepaddle-gpu2.0.0
![](https://img.aspxhome.com/file/2023/5/70145_0s.jpg)
asp三天学好ADO对象之第三天
python判断变量是否为int、字符串、列表、元组、字典的方法详解
perl批量查询ip归属地的方法代码
Python解析命令行读取参数--argparse模块使用方法
利用二进制文件安装etcd的教程详解
![](https://img.aspxhome.com/file/2023/7/112067_0s.jpg)
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
![](https://img.aspxhome.com/file/2023/0/102730_0s.png)
Mysql服务添加 iptables防火墙策略的方案
解决python3中cv2读取中文路径的问题
关于IDEA git 只有Commit没有Push的问题
![](https://img.aspxhome.com/file/2023/7/63437_0s.png)
详解python __init__.py 和 __all__作用
![](https://img.aspxhome.com/file/2023/9/86589_0s.png)