目标:
用urllib模块实现
根据搜索来获取指定贴吧内容网页,然后以’.html’格式直接保存网页,
可参考:
https://blog.csdn.net/xdc1812547560/article/details/107989273
计划
首先,引入模块,然后分步来完成
分三步:
1、分析百度网页链接来通过改变链接中的参数来获取指定页面
2、获取网页内容
3、保存
第一步
首先分析链接得出页面的变化与参数pn=‘?’有关
import urllib.request
import urllib.parse
import random
#1、分析百度贴吧网页链接
#第一页
#https://tieba.baidu.com/f?kw=%E7%BE%8E%E5%A5%B3&ie=utf-8&pn=0
#第二页
#https://tieba.baidu.com/f?kw=%E7%BE%8E%E5%A5%B3&ie=utf-8&pn=50
#第三页
# https://tieba.baidu.com/f?kw=%E7%BE%8E%E5%A5%B3&ie=utf-8&pn=100
#从网页链接分析来看,我们发现当pn=?改变时页面会改变,页数的规律 pn = (当前页数 - 1)*50
第二步
请求头
然后获取网页内容
首先设置请求头,这里使用两个User-Agent来随机交替使用
#2、获取网页内容
#因为可能爬取的页面过多,所以用多个user-agent来随机请求网页
headers_list = [{
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'},{
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11'}]
headers = random.choice(headers_list)
url拼接与请求
获取所需
获取需要爬取的贴吧名与开始页数,结束页数
# 获取搜索
sousuo = input('您要爬取的贴吧的贴吧名:')
# 开始页数
start_page = int(input('需要爬取的开始页数:'))
# 结束页数
end_pag