python爬虫请求头的使用


Posted in Python onDecember 01, 2020

爬虫请求头

网页获取:

通过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()

到此这篇关于python爬虫请求头的使用的文章就介绍到这了,更多相关python爬虫请求头内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python复制文件的方法实例详解
May 22 Python
Python实现 多进程导入CSV数据到 MySQL
Feb 26 Python
Python中optparser库用法实例详解
Jan 26 Python
python 删除列表里所有空格项的方法总结
Apr 18 Python
python求最大连续子数组的和
Jul 07 Python
tensorflow实现简单逻辑回归
Sep 07 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
搞定这套Python爬虫面试题(面试会so easy)
Apr 03 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
Python有参函数使用代码实例
Jan 06 Python
Python计算公交发车时间的完整代码
Feb 12 Python
Python单例模式的四种创建方式实例解析
Mar 04 Python
在pycharm创建scrapy项目的实现步骤
Dec 01 #Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
Dec 01 #Python
python 检测图片是否有马赛克
Dec 01 #Python
python中pop()函数的语法与实例
Dec 01 #Python
python爬虫多次请求超时的几种重试方法(6种)
Dec 01 #Python
python爬虫搭配起Bilibili唧唧的流程分析
Dec 01 #Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
Dec 01 #Python
You might like
php 什么是PEAR?(第三篇)
2009/03/19 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
2019/02/20 PHP
js原型链原理看图说明
2012/07/07 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
[30:00]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第二场 11.28
2020/12/01 DOTA
python读文件逐行处理的示例代码分享
2013/12/27 Python
Python实现股市信息下载的方法
2015/06/15 Python
python 字典(dict)按键和值排序
2016/06/28 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
2014年学习雷锋活动总结
2014/03/01 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
公司收款委托书范本
2014/09/20 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
Css预编语言及区别详解
2021/04/25 HTML / CSS
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
Python中的pprint模块
2021/11/27 Python
你知道Java Spring的两种事务吗
2022/03/16 Java/Android