构建用户代理池

首页 » 爬虫 » 构建用户代理池

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

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)

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

构建用户代理池

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

分享到:
赞(0) 打赏

评论 5

评论前必须登录!

 

  1. #1

    我加你了哦

    小蚯蚓6个月前 (03-27)
  2. #2

    可以

    沥青6个月前 (03-27)
  3. #3

    我也是小白以后多多交流

    渣渣辉6个月前 (03-28)
  4. #4

    给你点赞

    你哥6个月前 (03-28)
  5. #5

    我也是学计算机的

    小白6个月前 (03-28)

觉得文章有用就打赏一下弟弟吧

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.5主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
正在播放:

作者想对您说:

累了就停下来听首歌吧

听完后会给您一个好心情

最后

等到您不容易

还希望您能多待一会儿

      00:00/00:00