网络爬虫---爬取CSDN个人博客,增加博客阅读量实战(内含用户代理池知识)

Python网络爬虫

1.知识要求

  • 掌握python基础语法
  • 熟悉urllib模块知识
  • 异常处理

如果你对相关知识有些遗忘,可以点上面的链接,熟悉一下相关知识点。

2.用户代理池

说明:如果我们只是单一的用一个用户代理去不断爬取博客,来增加访问量,会被网站后台发现,可能导致你的用户代理在一段时间内禁止访问该博客,很不安全。所以,我们要多建立几个用户代理,每次随机的选一个用户代理去访问博客,这样相对来说就要安全很多。将你获得的所以用户代理放在一个list中就构成了一个用户代理池,获取用户代理有两个方法:
(1)用自己电脑下载不同的浏览器,同一电脑使用不同浏览器的用户代理是不一样的。下面是我自己QQ浏览器和Google浏览器的用户代理,你会发现是不一样的。
网络爬虫---爬取CSDN个人博客,增加博客阅读量实战(内含用户代理池知识)_第1张图片
网络爬虫---爬取CSDN个人博客,增加博客阅读量实战(内含用户代理池知识)_第2张图片
(2)百度搜索User-Agent复制一些用户代理
网络爬虫---爬取CSDN个人博客,增加博客阅读量实战(内含用户代理池知识)_第3张图片
网络爬虫---爬取CSDN个人博客,增加博客阅读量实战(内含用户代理池知识)_第4张图片

3.爬取CSDN个人博客,增加博客阅读量实战

#为csdn博客刷阅读量
import urllib.request
import urllib.error
import random
import socket   #为了防止访问链接超时(timeout),而需要导入的模块
#要访问的网址,多弄几个,然后用随机的方法选取,这样更安全
urls = [
    'https://blog.csdn.net/qq_43546676/article/details/88385755',
    'https://blog.csdn.net/qq_43546676/article/details/88365136',
    'https://blog.csdn.net/qq_43546676/article/details/88356667',
    'https://blog.csdn.net/qq_43546676/article/details/87953860',
    'https://blog.csdn.net/qq_43546676/article/details/87865197',
    'https://blog.csdn.net/qq_43546676/article/details/87907607',
    'https://blog.csdn.net/qq_43546676/article/details/88121447',
    'https://blog.csdn.net/qq_43546676/article/details/88210284',
    'https://blog.csdn.net/qq_43546676/article/details/86678908'
]
#用户代理池,对于同一台电脑来说,不同的浏览器的用户代理也是不一样的
ua_pools = [
    'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.5558.400 QQBrowser/10.1.1695.400',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
    'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)',
    'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)',
    'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)'
]

#随机获取一个访问网址
def getUrl(urls):
    this_url = random.choice(urls)
    return this_url
    
#随机获取一个报头,并安装为全局
def ua(ua_pools):
    ua = random.choice(ua_pools)
    headers = ('User-Agent', ua)
    opener = urllib.request.build_opener()
    opener.addheaders = [headers]
    #设置为全局
    urllib.request.install_opener(opener)
    
#访问10000次
for i in range(0, 10000):
    #异常处理,使程序变的健壮,遇到错误之后还能继续爬取信息
    try:
        #随机获取一个网址
        url = getUrl(urls)
        #随机获取并安装一个报头
        ua(ua_pools)
        data = urllib.request.urlopen(url, timeout=2).read().decode('utf-8', 'ignore')
        #print(len(data))
    except urllib.error.HTTPError as e:
        if hasattr(e, 'code'):
            print(e.code)
        if hasattr(e, 'reason'):
            print(e.reason)
    except socket.timeout as e: #为了防止访问链接超时(timeout)
        print(e)
print('爬取成功!')

后面我们会用更加安全的一种方式,即IP代理与用户代理结合的方式去爬取网页来增加访问量,链接在此处

你可能感兴趣的:(网络爬虫)