python 随机请求头_为了爬虫换个头,我用python实现三种随机请求头方式!
相信大家在爬虫中都设置过请求头 user-agent 这个参数吧? 在请求的时候,加入这个参数,就可以一定程度的伪装成浏览器,就不会被服务器直接识别为spider.demo.code ,据我了解的,我很多读者每次都是直接从network 中去复制 user-agent 然后把他粘贴到代码中, 这样获取的user-agent 没有错,可以用, 但是如果网站反爬措施强一点,用固定的请求头可能就有点问题, 所以我们就需要设置一个随机请求头,在这里,我分享一下我自己一般用的三种设置随机请求头方式, 学到的就点个赞,评论一下吧!!!
思路介绍:其实要达到随机的效果,很大程度上我们可以利用随机函数库random 这个来实现,可以调用random.choice([user-agent]) 随机pick数组中一个就可以了,这是我的一种方式。
python作为一个拥有众多第三方包的语言,自然就有可以生成随机请求头的包咯,没错,就是fake-useragent 这个第三方库了,稍后我们介绍一下这个函数库的简单使用。
既然别人可以写第三方库,自然自己也可以实现一个这样的功能,大部分情况下,我很多代码都是直接调用我自己实现的一个GetUserAgentCS 类,直接就可以获取一个随机请求头了,直接写函数库,才牛逼舒服, 这个我也会在下面介绍如何编写函数库。
自己编写第三方库:不知道你们写代码的框架是怎样的,面向过程还是面向对象? 对于一次性的代码,就简单的编码就行了,如果你觉得这个代码它可以会在很多的地方用得到,可以重复使用,那么你就可以使用类的方式,去编写这个代码,那么在其他的文件中,你就可以直接调用你的写这个文件,直接调用你写的class类中的各种方法,而我也是这样实现的一个随机请求头的一个第三方库, 如下:
import random
import csv
class GetUserAgentCS(object):
"""
调用本地请求头文件, 返回请求头
"""
def __init__(self):
with open('D://pyth//scrapy 项目//setting//useragent.csv', 'r') as fr:
fr_csv = csv.reader(fr)
self.user_agent = [str(i[1]) for i in fr_csv]
def get_user(self):
return random.choice(self.user_agent)
useragent文件如下:
1,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"
2,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36"
3,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
4,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
5,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"
-------
------- # too much
100...
代码很简单的,读取本地的csv文件,然后random一个出去就行了,那现在就有人问我,你这个文件怎么来的, 很简单啊,自然就有方法了,待会在下一个模块我会讲到,在这里,我们只需要编写一个GetUserAgentCS类就可以,代码可以直接抄我上面的,然后保存为get_useragent.py 就可以了,然后你把这个包文件放在你自己爬虫文件夹的地方,然后这样调用:
from get_useragent import GetUserAgentCS
headers = {}
ua = GetUserAgentCS().get_user()
headers['user-agent'] = ua
return headers
如果你在这个调用GetUserAgentCS 不成功, 或者底下会出现红色的波浪线, 那么就是你没有设置当前工作环境,你只需要这么设置(设置你的爬虫文件夹):
你需要点击 Sources Root 就可以了!
使用第三方库 fake-useragent:这是一个别人已经写好的第三方库,你需要安装然后调用API 就可以了, 它可以获取各种的请求头,唯一的缺点就是 请求不稳定,有的时候网络波动就可能导致获取不成功,用于Scrapy中,不是很舒服,所以我在这个包的基础上,编写了如上我自己的包,至于请求头的数据怎么来的, 就是在这个包运行正常时候,一直更改user-agent,然后不断的请求 http://httpbin.org/user-agent 然后不断的保存数据,写入本地文件就可以了。
我们还是讲一讲这个包的使用方式吧!
安装
pip install fake-useragent
你可以 pip list 查看一下 是否安装成功
使用方式
from fake_useragent import UserAgent
headers= {'User-Agent':str(UserAgent().random)}
r = requests.get(url, headers=headers)UserAgent().random 可以获取任意浏览器的请求头
UserAgent().Chrome 可以获取谷歌浏览器的请求头
UserAgent().firefox 可以获取火狐浏览器的请求头
这个时候,直接用random就可以了,简单。
读取内存数组:这个时候就有很多人说, 我就换个请求头而已,需要这么麻烦吗? 当然,自然有简单的方式,只不过每次都需要复制来用,不是很方法,具体如下:
ua = ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,M
预先把请求头放入数组里面,然后用就可以了。
import random
ua = [.....]
r = requests.get(url, headers={"user-agent":random.choice(ua)})以上就是我关于请求头的几种设置方式了,有需要补充的可以评论区留言。
教你用三种方式设置随机请求头, 爬虫设置请求头(user-agent)是必然的,那如何生成一个随机请求头这个也是我们爬虫必须掌握的, 读完本篇文章你就可以轻松掌握 !
此文转载文
如有侵权联系小编删除!
python 随机请求头_为了爬虫换个头,我用python实现三种随机请求头方式!相关推荐
- python读取图像数据流_浅谈TensorFlow中读取图像数据的三种方式
本文面对三种常常遇到的情况,总结三种读取数据的方式,分别用于处理单张图片.大量图片,和TFRecorder读取方式.并且还补充了功能相近的tf函数. 1.处理单张图片 我们训练完模型之后,常常要用图片 ...
- (POST请求中的三种数据请求格式.application/x-www-form-urlencoded和multipart/form-data和application/json)
(POST请求中的三种数据请求格式.application/x-www-form-urlencoded和multipart/form-data和application/json) applicatio ...
- Python中三种表示NA的方式
Python中三种表示NA的方式 # -*- coding: utf-8 -*- import numpy as np import pandas as pd# data_frame = np.loa ...
- python修改ip地址_怎么更改电脑ip地址?基于 Python 爬虫的ip修改设计与实现
怎么更改电脑ip地址?基于 Python 爬虫原理的篮球鞋选择程序的设计与实现ip修改 [摘 要]伴随着篮球鞋工艺的进步及产业升级,多类型多种类的篮球鞋出现在大众的视野当中.与此同时,消费者对篮球鞋的 ...
- python爬虫和医学数据_【爬虫】(八)Python之爬虫和数据小解析
date: 2017-03-14 21:08:42 Holi需要. 之前爬的课表,现在需要将那些个一连串的字符串分割成想要的单独的数据,做个性化推送. 程序的前面和之前一样,模拟登录. 在处理选课/改 ...
- ajax后台返回数据中文乱码_解决Jmeter返回值显示中文乱码 的三种方法及设置随机动态参数(非原创侵删)...
一.Jmeter返回值显示中文乱码解决方法 第一种解决方法: 1. 点击线程组--添加--后置处理器--BeanShell后置处理程序 2.点击BeanShell后置处理程序,编写:prev.setD ...
- python目录及文件_零基础小白必看:python基本操作-文件、目录及路径
1 前言 在最近开发中,经常需要对文件进行读取.遍历.修改等操作,想要快速.简单的完成这些操作,我选择用 python .通过 python 的标准内置 os 模块,只需要几行代码,即可完成想要的操作 ...
- python字符串去头尾_悉尼大学某蒟蒻的Python学习笔记
About me 本蒟蒻是悉尼大学计算机科学大一的学生,这篇博客记录了学习INFO1110这门课的一些心得,希望能对大家有帮助. To start with 因为计算机只能识别机器语言,所以我们需要编 ...
- python 自动下载文件_【Py大法系列--03】Python如何自动下载文件
问题描述 Python自动下载文件,通用文件,包括但不限于压缩文件.图片等. 解决方法 一般情况下,Python下载文件的方式有以下几种: 利用urllib.urllib2,即Python爬虫用的最多 ...
最新文章
- Confluence 6 数据库表-系统信息(System information)
- [日常工作]偷懒创建一个存储过程进行模拟工作.
- 使用关中断解决资源冲突问题
- Linux 之十二 Makefile 从入门到放弃全解
- ECMA-335(CLI)标准 读书笔记(第一部:概念和架构 第7章)
- numpy.cov() 计算协方差矩阵
- 目前用的java几_java目前常用的几种定时任务
- DataTable 类(一)表结果操作
- Arrays数组的常用方法
- python vtk dicom_Python vtk读取并显示dicom文件示例
- Red Hat TimesTen安装记录
- G502使用计算机配置,罗技G502鼠标灵敏度如何设置?宏如何设置?
- C++中i++和++i的区别
- Unity3dRPG 相机跟随player旋转_【Cinemachine】VirtualCamera虚拟相机详解(一)
- NPOI Word插入图片的方法
- 论站长赚钱之七剑下天山
- openfoam前处理:并行计算decomposeParDict和setFieldsDict
- Prior-Induced Information Alignment for Image Matting
- 虚拟机安装Win10纯净版操作系统
- c语言 注册商标标志,什么是标识符?
热门文章
- python简单爬虫代码-python爬虫超简单攻略,带你写入门级的爬虫,抓取上万条信息...
- 编程语言python怎么读-0编程基础,什么语言也没学过,请问学Python怎样入门?...
- 用python画图代码-【Matplotlib】利用Python进行绘图
- python零基础自学教材-Python3零基础教材电子书合集
- python软件下载中文版-PyCharm中文版
- python下载-各种版本的Python下载安装教程
- 自学python考哪些证书-学python需要考证吗?考证有什么好处?
- 语音识别中的MFCC的提取原理和MATLAB实现
- 韩语识别_韩语文字识别_韩语图片识别 - 云+社区 - 腾讯云
- 百度AI长语音识别技术免费开放,调用时长不再受限