构建用户代理池

2020-01-12 81次浏览 已收录 5个评论

一些简单的反爬机制, 就是通过一个浏览器来源来判断是不是爬取自己的网站, 这个时候我们可以通过构建用户代理来伪装进行爬取信息

import urllib.request
import re
import random
uaplls=[#用户代理池
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.4 Safari/605.1.15",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
]
def ua(uapools):#随机选择一个用户
    thisua=random.choice(uapools)
    print("当前使用"+thisua)
    headers=("User-Agent",thisua)
    opener=urllib.request.build_opener()
    opener.addheaders=[headers]
    urllib.request.install_opener(opener)
 
url="http://xiaohua.zol.com.cn/jianduan/"
for i in range(1,10):
    ua(uaplls)#下面的分析请看我上一篇爬取CSDN的文章
    data=urllib.request.urlopen(url+str(i)+".html",timeout=5).read().decode("gbk","ignore")
    pat='<span class="article-title"><a target="_blank" href="(/.*?)"'
    all=re.compile(pat).findall(data)
    for i in range(0,len(all)):
        url2=urllib.request.urlopen("http://xiaohua.zol.com.cn/"+all[i],timeout=5).read().decode("gbk","ignore")
        pat2='<meta name="description" content="(.*?)"'
        all2=re.compile(pat2).findall(url2)
        if(len(all2)!=0):
            print(all2[0])
            print("-"*100)

爬取结果: 这是一个笑话网站

注意: 不要恶意利用, 尊重原创, 本篇只为学习练手, 作者概不负责任何和爬虫相关法律责任


渣渣龙, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:构建用户代理池
喜欢 (0)

您必须 登录 才能发表评论!

(5)个小伙伴在吐槽
  1. 我加你了哦
    小蚯蚓2020-03-27 13:22
  2. 可以
    沥青2020-03-27 13:48
  3. 我也是小白以后多多交流
    渣渣辉2020-03-28 16:38
  4. 给你点赞
    你哥2020-03-28 17:04
  5. 我也是学计算机的
    小白2020-03-28 17:55