百度贴吧小爬虫!(详细的不得了啊~)

在这个信息爆炸的时代,数据成为了最宝贵的资源之一。网络爬虫,作为获取数据的重要工具,它能够自动地从互联网上抓取信息,帮助我们从海量的网页中提取有价值的数据。无论是市场研究、学术分析还是个人兴趣,掌握网络爬虫技术都能让你在数据的海洋中游刃有余。

本章做的是一个比较简单的python爬虫,非常适合初学者练手

看完本章希望能在不看回看本篇文章的情况自己独立完成,锻炼能力

资源也已经跟本文站进行资源绑定,可以自行下载浏览(免费)

目录

导入

主程序

构建爬虫调度器

获取到文件

保存本地


导入

在真是开始之前,我们先导入需要使用到的库:

import urllib.request
import urllib.parse

主程序

然后可以创建一个主程序

if __name__ == "__main__":
    kw = input('请输入需要爬取的贴吧名: ')
    begin_page = int(input("请输入起始页码: "))
    end_page = int(input("请输入结束的页码: "))

这里相当于是先做好判断,判断需要爬取的贴吧名称是什么,然后大概是第几页到第几页

先进贴吧主页观察他的url

随便进一个页面看看,然后观察他第一页到第二页的规律:

第一页的url:https://tieba.baidu.com/f?kw=lol%E9%99%AA%E7%8E%A9&ie=utf-8&pn=0

第二页的url:https://tieba.baidu.com/f?kw=lol%E9%99%AA%E7%8E%A9&ie=utf-8&pn=50

第三页的url:https://tieba.baidu.com/f?kw=lol%E9%99%AA%E7%8E%A9&ie=utf-8&pn=100

我可以观察到,每一页他的pn都加了五十,那么我们就可以粗略的判断

pn每加50,访问的页数就加1

然后紧接着之前的代码完善主程序:

url = "http://tieba.baidu.com/f?"
key = urllib.parse.urlencode({"kw":kw})
url = url + key
tieba_spider(url, begin_page, ende_page) 

这里相当于是传入了贴吧的url,再将自己需要爬取的贴吧进行编码

接着把url和编码内容拼在一起成为新的url

等一下再创建一个tieba_spider的函数

这里先打印一下新的url看看效果:

print(url)

以下就是实际效果:

请输入要爬取的贴吧名: lol
请输入起始页: 1
请输入结束页: 2
http://tieba.baidu.com/f?kw=lol

构建爬虫调度器

接着还是写tieba_spider:

def tieba_spider(url, begin_page, end_page):
    """
    作用:贴吧爬虫调度器,负责组合处理每个页面的url
    """
    for page in range(begin_page, end_page):
        pn = (page - 1) * 50
        file_name = "第" + str(page) + "页.html"
        full_url = url + "&pn=" + str(pn)
        html = load_page(full_url, file_name)
        write_page(html, file_name)

这里的代码很好理解,但多了load_page和write_page两个方法,正是等一下我们就需要创建的

获取到文件

def load_page(full_url, file_name):
    """
    作用:根据url发送请求,获取服务器响应文件
    """
    header = {
        "User-Agent": ""
    }
    request = urllib.request.Request(url, headers=header)
    return urllib.request.urlopen(request).read()

相当于是构建请求头,接着构建好Request对象

最后返回我们的html

但是仅仅是获取到了html,我们还得保存

这就是write_page

保存本地

将获取到的文件保存到本地:

def write_page(html,file_name):
    """
    作用:将html文件写入本地文件
    """
    print("正在保存" + file_name)
    with open(file_name, 'w', encoding='utf-8') as file:
        file.write(html.decode("utf-8"))

将这些代码进行组装,也就完成了一个简单的百度贴吧爬虫

然后我们试验一下

请输入要爬取的贴吧名: lol
请输入起始页: 1
请输入结束页: 5
http://tieba.baidu.com/f?kw=lol
正在保存第1页.html
正在保存第2页.html
正在保存第3页.html
正在保存第4页.html
正在保存第5页.html

检查一下文件是否有问题

都是OK的,也就是说,爬虫到这里就完成了

----------

本文章仅供交流

原创不易,而且可以发发评论,别让我一直单机啊、

希望本文章的内容能帮助到你

谢谢~~~~~~~~~~~~~~~~~~~~~~~

     ,,      ,, 
   ;'   (\____/)   ;
  /    (_oo_)    \  
 /    (O)  (O)    \ 
(   """""""""""""""""""""") 
 |                  |
 |                  |
 |                  |
 |                  |
 |                  |
 \__________________/

  • 16
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值