【批量爬取百度贴吧】-获取指定页数的html源码保存本地

一、网页分析

目标网址:https://tieba.baidu.com/f?ie=utf-8&kw=%E6%9D%8E%E6%AF%85&fr=search
我在搜索框中输入了,李毅吧,也可以搜索别的,可以发现url中?开始后面参数有个kw变化
在这里插入图片描述
在这里插入图片描述
那么可以得到结论,爬取此网页需要拼接url,或者传入参数
在这里插入图片描述

对于爬取一个网页,永远都是第一步,目标数据能否在doc中找到(针对反爬措施分析),如下图,成功找到,说明
无需考虑 异步,等等,加密。
在这里插入图片描述

分页爬取分析:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

那么根据以上网页分析

确认了2件事情

第一:简单网页,无需考虑加密
第二:点击分页中的跳转页数,知道每一页+50 ,pn
第三:需要拼接参数,请求头伪装(搜索关键词,分页的pn)

第三需求能够有两种方式:
方法一:拼接路由url,
方法二:params传参

这里使用哪个都可以,我使用的方法一

二、代码实现与步骤

在这里插入图片描述

import requests,os
#批量的爬取:分页,get请求的参数中的一个参数来控制的。
#pn =0 1
#pn=50 2
#pn=100 3

def get_page(kw,page):
    '''
    获取一页贴把数据
    :param kw: 贴吧的名称
    :param page: 页码 1,2...
    :return:
    '''
    # 确定url
    base_url = 'https://tieba.baidu.com/f?'
    params = {
        'kw': kw,
        'ie': 'utf-8',
        'pn': (page-1)*50,
    }
    response = requests.get(base_url ,params=params)
    dirname = f'./tieba/{kw}'
    # 判断是否有存放文件夹,如果没有就创建
    if not os.path.exists(dirname):
        os.mkdir(dirname)

    with open(f'{dirname}/{page}.html', 'w', encoding='utf-8') as fp:
        fp.write(response.text)
    print(f'{dirname}/{page}.html下载完成!')

if __name__ == '__main__':
    kw = input('请输入关键字:')
    for i in range(1,11):
        get_page(kw,i)

三、结果分析

爬取的结果会保存在我拼接的路径中
可以打开李毅吧第一页,浏览器呈现的关键词

在本地1.html 中搜索,如果搜到了,就确认爬取陈宫了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值