首页 > 其他分享 >百度贴吧小爬虫!(详细的不得了啊~)

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

时间:2024-08-30 18:51:24浏览次数:6  
标签:tieba name url 小爬虫 html 不得了 file page 百度

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

本章做的是一个比较简单的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)    \ 
(   """""""""""""""""""""") 
 |                  |
 |                  |
 |                  |
 |                  |
 |                  |
 \__________________/

标签:tieba,name,url,小爬虫,html,不得了,file,page,百度
From: https://blog.csdn.net/heilai4/article/details/141724401

相关文章

  • Amos百度云下载与安装 附图文安装教程
    如大家所了解的,Amos是一款经常被运用在社会科学研究中的数据分析软件,尤其广泛用于人文社会科学领域的各种研究中。运用Amos,可以帮助研究人员使用结构方程模型(SEM)对他们收集到的数据进行分析与解释。自用Amos24安装包,可按需获取:https://pan.baidu.com/s/1lBYhFAqNXDWv6p......
  • pbootcms模板如何增加百度地图
    pbootcms模板该怎样去增加百度地图呢?首先,您需要找到您打算增加百度地图的那个模板,其所在路径为:template文件夹。举例来说,如果您想要将其增加到联系页面的contact.html上,那就找到合适的位置,然后添加如下代码:<scripttype="text/javascript"src="https://api.map.baidu.com/......
  • pbootcms后台的百度普通收录token怎么填写?怎么获得?
    首先打开:百度搜索资源平台(https://ziyuan.baidu.com/),如果您还没有账号,那么可以直接注册一个新的账号。然后点击用户中心,接着选择站点管理,再点击添加网站(请务必按照系统给出的提示进行相关操作)最后点击资源提交,找到普通收录,然后选择推送接口,此时您就能够看到Token值了!把token......
  • 产品经理面试宝典:阿里、字节、百度、腾讯、拼多多等全国顶级大厂面试题一网打尽!
    ​在互联网行业蓬勃发展的今天,产品经理作为连接技术、设计和市场的核心角色,其重要性日益凸显。想要进入国内顶尖的互联网大厂,如阿里巴巴、字节跳动、百度、腾讯、拼多多等,产品经理岗位的面试无疑是一场硬仗。本文将为你揭秘这些大厂的产品经理面试真题,并提供参考答案思路,助你顺利......
  • 百度文心一言也挺聪明的
    突然想到有个图可以表示全能型的人才,想不起是什么了,于是就问了文心一言。问:雷达图中都比较强的人,叫什么答:雷达图中各方面都比较强的人,通常被称为“六边形战士”。这个网络流行语源于日本媒体《东京乒乓球新闻》对乒乓选手实力进行分析时所使用的“二次元”六维雷达图,该图从力......
  • 四博智联 Esp-32CAM 图像识别接入燃气数据 本地识别及百度数字识别
    接到一个客户需求,利用ESP32+摄像头完成家庭燃气表数据的采集接入,大概流程:一、设备配网:  通过微信小程序BLE连接到ESP32配网,配网完成后,把设备id绑定到相应的账号下。让ChatGPT设计协议及代码如下:设计一个通过微信小程序和BLE(蓝牙低功耗)给ESP32设备配网的协议需要考虑数据......
  • 百度之星2024总结
    百度之星决赛2024受广东信奥好友影响,了解《绝区零》中格莉丝的“新型空洞内特殊作业用工业机器开发日志”,于是作一记录。开场吃过早饭上位,左右两边都是所认识的同学,没有怎么紧张,复习模板。右边沉石鱼惊旋带了一沓厚厚的纸质打印资料,左边的wmy有一大堆的多项式板子,羡慕。比赛......
  • 250+ AI新创意!百度黑客马拉松大赛“专攻”智能体
    250+AI新创意!百度黑客马拉松大赛“专攻”智能体博主默语带您GotoNewWorld.✍个人主页——默语的博客......
  • 代码实现WordPress主动推送及自动推送至百度搜索收录
    站长们辛辛苦苦写的文章,无非就是让百度收录,也可以帮助人,也可以给自己站或者帮人优化的站带来流量,今天就来发一篇关于wordprss主动推送给百度的方法;使用方法,U8格式放在wp当前模板functions.php里即可12345678910111213141516171819202122232425262......
  • 从百度网盘中下载文件到linux服务器
    前提:先安装python环境1.安装包pipinstallbypy2.认证(第一次连接需要认证)bypyinfo 3.浏览器中打开,复制授权码,enter输入 4.认证成功后,在网盘中的“我的应用数据”目录下看到bypy目录,将要传输的数据放入bypy文件夹中。5.下载文件或者下载文件夹bypydownfile123ata.zi......