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

文章目录

  • 一、网页分析
  • 二、代码实现与步骤
  • 三、结果分析

一、网页分析

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

对于爬取一个网页,永远都是第一步,目标数据能否在doc中找到(针对反爬措施分析),如下图,成功找到,说明
无需考虑 异步,等等,加密。
【批量爬取百度贴吧】-获取指定页数的html源码保存本地_第2张图片

分页爬取分析:
【批量爬取百度贴吧】-获取指定页数的html源码保存本地_第3张图片
【批量爬取百度贴吧】-获取指定页数的html源码保存本地_第4张图片
【批量爬取百度贴吧】-获取指定页数的html源码保存本地_第5张图片

那么根据以上网页分析

确认了2件事情

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

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

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

二、代码实现与步骤

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

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 中搜索,如果搜到了,就确认爬取陈宫了
【批量爬取百度贴吧】-获取指定页数的html源码保存本地_第7张图片

你可能感兴趣的:(Python爬虫,python,web,http,数据分析)