Python 爬取与反爬取进阶

本文介绍如何使用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 **********#
头歌数据采集实战第4爬取爬取进阶任务描述 本任务:使用随机请求头爬取 baike.baidu.com/text/ 前两页的段子内容,并保存在 ./step4/content.txt 中。 相知识 在爬机制中,许多网站会通过 ip 以及请求头来限制你的访问,在不影响网站正常运作的情况下,我们可以使用 ip 代理池以及随机请求头来伪装自己的爬虫,其中需要用到的就是 python 的 random 模块。 下面是对爬取爬取进阶的视频介绍: 课程视频《爬取爬取进阶》 编程要求 请仔细阅读右侧代码,结合相知识,在 Begin-End 区域内进行代码补充,使用随机请求头爬取 baike.baidu.com/text/ 前两页的内容,并保存在 ./step4/content.txt 中。 测试说明 平台会对你编写的代码进行测试: 预期输出: 第1页采集成功 第2页采集成功 内容保存成功,代码框架为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 **********# # 使用随机请求头 #********** End **********# def main(page): # page为页号,int类型 #********** Begin **********# #********** End **********#请总结历史经验给出一个在头歌测评成功率高的代码吧
最新发布
11-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小浪浪、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值