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中break语句的用法
May 14 Python
利用Python脚本生成sitemap.xml的实现方法
Jan 31 Python
python实现unicode转中文及转换默认编码的方法
Apr 29 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 Python
Python基于百度云文字识别API
Dec 13 Python
python3使用print打印带颜色的字符串代码实例
Aug 22 Python
给你一面国旗 教你用python画中国国旗
Sep 24 Python
python的命名规则知识点总结
Oct 04 Python
Pandas-Cookbook 时间戳处理方式
Dec 07 Python
Python模块常用四种安装方式
Oct 20 Python
Python实现邮件发送的详细设置方法(遇到问题)
Jan 18 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
ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
2013/03/01 Javascript
Js中setTimeout()和setInterval() 何时被调用执行的用法
2013/04/12 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
javascript常用函数(2)
2015/11/05 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
node脚手架搭建服务器实现token验证的方法
2021/01/20 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
Python中的变量和作用域详解
2016/07/13 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
电大物流学生的自我评价
2013/10/25 职场文书
七夕情人节促销方案
2014/06/07 职场文书
幼儿园感谢信
2015/01/21 职场文书
春季运动会开幕词
2015/01/28 职场文书
基于python实现银行管理系统
2021/04/20 Python