用户代理池构建实战、IP代理池构建的两种方案实战

用户代理池

概述

我们已经学会了如何构建用户代理(浏览器伪装),那么用户代理池如何构建呢?所谓用户代理池,即将不同的用户代理组建成为一个池子,然后随机调用。

实战

'''
用户代理池构建
即将不同浏览器的User-Agent放在一起,称为用户代理池构建
'''
import re,urllib.request,random
#用户代理池
uapools = [
 "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0",
 "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",
 ]


def ua(uapools):
    thisua = random.choice(uapools)
    print(thisua)
    #浏览器伪装
    headers = ("User-Agent",thisua)
    #创建一个opener
    opener = urllib.request.build_opener()
    opener.addheaders = [headers]
    #将opener安装为全局
    urllib.request.install_opener(opener)

#爬取页面1到3的Python标题
for i in range(0,3):
    ua(uapools)    #调用函数,得到用户代理池中随机的用户代理.
    url = "https://www.baidu.com/s?wd=Python&pn="+str(i*10)+"&oq=Python"
    #用urlopen打开网页
    data=urllib.request.urlopen(url).read().decode('utf-8')
    pat = 'data-tools=.*?"title":"(.*?)"'
    link = re.compile(pat).findall(data)
    print(link)
    print("----------------")
          

IP代理与IP代理池构建的两种方式

IP代理概述

使用代理IP,这是爬虫/反爬虫的第二大招,通常也是最好用的。

很多网站会检测某一段时间某个IP的访问次数(通过流量统计,系统日志等),如果访问次数多的不像正常人,它会禁止这个IP的访问。

所以我们可以设置一些代理服务器,每隔一段时间换一个代理,就算IP被禁止,依然可以换个IP继续爬取。
在这里插入图片描述

在urllib.request库中,通过ProxyHandler来设置使用代理服务器,下面通过例子来说明如何使用自定义opener来使用代理:

免费短期代理网站:西刺免费代理IP(http://www.xicidaili.com/)

IP代理池构建

'''
ip代理池构建
'''
import re,urllib.request
import random

#构建ip代理池

ip_pools = [
"115.159.201.179",
"110.86.136.14"
]


def ip(ip_pools, url):
    ip = random.choice(ip_pools)
    print(ip)
   
    #将ip转为相应的格式
    proxy = urllib.request.ProxyHandler({"http":ip})

    #把IP代理装入opener
    opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
    #将opener设为全局
    urllib.request.install_opener(opener)
    data = urllib.request.urlopen(url).read()
    return data
#用任意ip代理爬取三次    
for i in range(0,3):
    url = "https://www.baidu.com"
    data = ip(ip_pools , url)
    print(data)
    fh = open("F://ip//ip"+str(i)+".html","wb")
    fh.write(data)
    fh.close()
发布了43 篇原创文章 · 获赞 46 · 访问量 4507

猜你喜欢

转载自blog.csdn.net/S_123789/article/details/101015789