Python爬虫--用户代理池

用户代理池的作用就是模拟不同用户请求,

防止被屏蔽。


用户代理池:

这个池子也很简单,

就是多准备一些 ua 头就好了

废话不多说,先来简单的看看

复制代码
import urllib.request
import random

uapool = [

	"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60",
	"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36",
	"Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50",
	"Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10",
	"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2"

]

def ua(uapool):

	headers = random.choice(uapool)  #  随机选取一个

	print(headers)

if __name__ == '__main__':
	ua(uapool)

演示随机选取,

可以封装一个函数,这样要用的时候就调用一次就好了。


接下来我们再把请求写进去

复制代码
import urllib.request
import random

uapool = [

	"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60",
	"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36",
	"Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50",
	"Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10",
	"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2"

]

def ua(uapool):

	headers = random.choice(uapool)  #  随机选取一个

	opener = urllib.request.build_opener()

	opener.addheaders = ["User-Agent",headers]

	urllib.request.install_opener(opener)

这样就封装好了一个请求

为什么前面要加 User-Agent 呢?

这就是头部标识,相当于 key -> value 的关系


接下来我们可以 拿 糗事百科 那个代码来演示一下

复制代码
import urllib.request
import random

uapool = [

	"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60",
	"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36",
	"Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50",
	"Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10",
	"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2"

]

def ua(uapool):

	headers = random.choice(uapool)  #  随机选取一个

	opener = urllib.request.build_opener()

	opener.addheaders = ["User-Agent",headers]

	urllib.request.install_opener(opener)


for i in range(1,5):

	ua(uapool)

	this_url = "https://www.qiushibaike.com/text/page/"+str(i)+"/"

	data = urllib.request.urlopen(this_url).read().decode("utf-8","ignore")

	path = '<div class="content">.*?<span>(.*?)</span>.*?</div>'

	resut = re.compile(path,re.S).findall(data)

	for j in resut:
		print(j)
		
	time.sleep(0.5)

这样每次循环的时候他都会选取一个 ua 代理

相关推荐
EvanSun__12 分钟前
python学习 -- 综合案例1:设计一款基于python的飞机大战小游戏
python·学习·pygame
站大爷IP31 分钟前
Webview+Python:用HTML打造跨平台桌面应用的创新方案
python
三道杠卷胡34 分钟前
【AI News | 20250417】每日AI进展
人工智能·pytorch·python·语言模型·github
Tanecious.2 小时前
机器视觉--Python补充知识
android·开发语言·python
大模型真好玩2 小时前
一文带你了解RAG核心原理!不再只是文档的搬运工
人工智能·python·ai编程
da-peng-song3 小时前
python学习—详解word邮件合并
python·学习·word
明明跟你说过3 小时前
深入浅出 NVIDIA CUDA 架构与并行计算技术
人工智能·pytorch·python·chatgpt·架构·tensorflow
get lend gua4 小时前
游戏数据分析,力扣(游戏玩法分析 I~V)mysql+pandas
python·mysql·leetcode·游戏·数据分析
唐叔在学习4 小时前
【Python入门】文件读取全攻略:5种常用格式(csv/excel/word/ppt/pdf)一键搞定 | 附完整代码示例
python·数据分析·办公自动化·文件处理
心软且酷丶4 小时前
leetcode:2899. 上一个遍历的整数(python3解法)
python·算法·leetcode