百度贴吧数据获取

简介: 获取贴吧数据

📋 个人简介

  • 💖 作者简介:大家好,我是阿牛😜
  • 💬格言:迄今所有人生都大写着失败,但不妨碍我继续向前!🔥

🧨前言

百度贴吧!曾今一代人的回忆,曾经用了一年时间就成长为了全球最大的中文社区。用户量超 15 亿,曾诞生无数金句!“贾君鹏,你妈喊你回家吃饭”、“帝吧出征,寸草不生”,当年流行一句“吧友一起吼一吼,整个互联网都要抖三抖。”由此可见当年的贴吧多么火爆,即使今天大不如从前了,但阿牛依旧是贴吧资深吧友,闲暇时常去刷搞笑段子,那么今天阿牛对贴吧下手了!

🧧分析

在这里插入图片描述
今天目标是帖子的标题和链接,从标题中就可以看出很多内容了,接下来做一个分页处理就好了
在这里插入图片描述在这里插入图片描述
可以观察出页码是由pn参数决定的,第一页pn=0,第二页pn=50,第三页pn=100,以此类推。另外,可以看到链接中的参数kw就是我们搜索的参数,可以用上,把爬虫写活一点!
正常分析就完成了,那我们上代码看看
在这里插入图片描述
好家伙,出问题了,没有匹配到所有要提取信息的元素节点,列表为空,这可把阿牛整懵了,学到现在,阿牛对xpath一直用xpath helper,不会出错,不信你们看:
在这里插入图片描述
正常猜想是反爬了,不急,先打开网页源代码看一手,不看不知道,一看吓一跳,源码中内容是注释掉的,在浏览器通过渲染去掉了注释。
在这里插入图片描述
所以我们拿到的内容是注释掉的,需要处理去掉HTML的注释符号,我们的xpath才能生效。
在这里插入图片描述
果然去掉注释后我们拿到了对象,接下来我们就可以进行数据提取了,最后把他存为csv文件。

🧧源码

import requests
from lxml import etree
import csv
#百度贴吧里的东西反扒将内容注释了,解决方案为换低端浏览器,或者处理掉注释
headers = {
    'User-Agent': 'Mozilla/5.0(Windows NT 10.0; WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/90.0.4430.85 Safari/537.',
}
name = input("请输入你要搜索的贴吧名称:")
page = input("请输入你要看的页数:")
page = (int(page)-1)*50
for page in range(0,page+50,50):
    url = 'https://tieba.baidu.com/f?kw={}&ie=utf-8&cid=&tab=corearea&pn={}'.format(name,page)
    response = requests.get(url=url,headers=headers).text
    #去掉html的注释符号
    response = response.replace("<!--","").replace("-->","")
    html = etree.HTML(response)
    el_list = html.xpath('//li[@class=" j_thread_list clearfix thread_item_box"]/div/div[2]/div[1]/div[1]/a')
    # print(el_list)
    # newline='' 去掉存进csv文件内容之间的空行
    with open("贴吧.csv", "w", encoding="utf-8",newline='') as csvfile:
        fieldnames = ["title", "link"]
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        for el in el_list:
            temp = {}
            temp['title'] = el.xpath("./text()")[0]
            #给链接拼接域名
            temp['link'] = 'https://tieba.baidu.com'+el.xpath("./@href")[0]
            print(temp)
            writer.writerow(temp)
    print("爬取完毕!")

🧧结果

在这里插入图片描述
在这里插入图片描述

🧨结语

这都是阿牛很久以前写的,抽空把它写出来,希望对大家有所帮助,我会持续将以前学的慢慢发布到专栏哦!感谢大家的支持!!!

相关文章
|
数据可视化 IDE Java
毕业设计专用 完全开源 基于Java的房屋租赁管理系统(二)
毕业设计专用 完全开源 基于Java的房屋租赁管理系统
597 0
|
9月前
|
机器学习/深度学习 数据采集 数据可视化
Java 大视界 -- 基于 Java 的大数据可视化在城市空气质量监测与污染溯源中的应用(216)
本文探讨Java大数据可视化在城市空气质量监测与污染溯源中的创新应用,结合多源数据采集、实时分析与GIS技术,助力环保决策,提升城市空气质量管理水平。
Java 大视界 -- 基于 Java 的大数据可视化在城市空气质量监测与污染溯源中的应用(216)
|
运维 数据挖掘 API
阿里云百炼控制台全新升级
阿里云百炼控制台全新升级,更开放、高效、易用!主要变化包括:模型、应用等功能模块拆分,贴合使用场景;模型按“家族”聚类,搜索便捷;子业务空间授权入口调整,支持批量操作;应用相关功能集成在“应用”页面;新增MCP管理和广场,实现一键部署免运维,大幅降低开发门槛。
1765 14
阿里云百炼控制台全新升级
|
监控 API 开发者
Sentinel:微服务的全能守护
Sentinel 是阿里巴巴开源的一款轻量级流量控制和熔断降级框架。它通过设置流量控制、熔断降级和系统保护规则,确保微服务在高并发场景下稳定运行。Sentinel 提供丰富的功能、实时监控和灵活的集成方式,适用于各种分布式系统。
1863 0
|
搜索推荐 算法 索引
【排序算法】深入解析快速排序(霍尔法&&三指针法&&挖坑法&&优化随机选key&&中位数法&&小区间法&&非递归版本)
【排序算法】深入解析快速排序(霍尔法&&三指针法&&挖坑法&&优化随机选key&&中位数法&&小区间法&&非递归版本)
836 4
Qt6.5打包(QT windeployqt不是内部或外部命令、QT错误:缺少libgcc_s_seh-1.dll ,无法正常启动(0xc000007b) 问题解决方法)
Qt6.5打包(QT windeployqt不是内部或外部命令、QT错误:缺少libgcc_s_seh-1.dll ,无法正常启动(0xc000007b) 问题解决方法)
2075 1
|
jenkins Java 持续交付
jenkins学习笔记之十六:SonarSQube支持多分支
jenkins学习笔记之十六:SonarSQube支持多分支
1038 0
精益求精:ERP系统的用户培训与支持
精益求精:ERP系统的用户培训与支持
666 6
|
数据采集 存储 NoSQL
实现网页认证:使用Scrapy-Selenium处理登录
在网络爬虫的世界中,我们经常需要面对一些需要用户认证的网页,如登录、注册验证等。本文将介绍如何使用Scrapy-Selenium来处理这类网页,实现自动化登录和爬取。
891 0
实现网页认证:使用Scrapy-Selenium处理登录
|
Linux 存储
u-boot向linux内核传递启动参数(详细)
U-BOOT 在启动内核时,会向内核传递一些参数.BootLoader 可以通过两种方法传递参数给内核,一种是旧的参数结构方式(parameter_struct),主要是 2.6 之前的内核使用的方式。
2129 0