Python 爬取与反爬取进阶

目录

任务描述

相关知识

编程要求

测试说明


任务描述

本关任务:使用随机请求头爬取 www.qiushibaike.com/text/ 前两页的段子内容,并保存在 ./step4/content.txt 中。

相关知识

在反爬机制中,许多网站会通过 ip 以及请求头来限制你的访问,在不影响网站正常运作的情况下,我们可以使用 ip 代理池以及随机请求头来伪装自己的爬虫,其中需要用到的就是 python 的 random 模块。

编程要求

请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,使用随机请求头爬取 www.qiushibaike.com/text/ 前两页的段子内容,并保存在 ./step4/content.txt 中。

测试说明

平台会对你编写的代码进行测试:

预期输出:

  1. 第1页采集成功
  2. 第2页采集成功
  3. 内容保存成功
import urllib.request
import re
import random
#请求头
uapools=[
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393",
    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)",
    ]
def UA():
    #********** Begin **********#
    # 使用随机请求头
    opener = urllib.request.build_opener()
    thisua = random.choice(uapools)
    ua = ("User-Agent", thisua)
    opener.addheaders = [ua]
    urllib.request.install_opener(opener)
    #********** End **********#
def main(page):    # page为页号,int类型 
    #********** Begin **********#
    for i in range(0, page):
        UA()
        thisurl = "https://www.qiushibaike.com/text/page/"+str(i+1)
        data = urllib.request.urlopen(thisurl).read().decode("utf-8", "ignore")
        with open('./step4/content.txt', 'a') as fp:
            fp.write(data)
    #********** End **********#

你可能感兴趣的:(python,算法竞赛,educoder,python,网络爬虫)