首页 > 其他分享 >百度贴吧帖子爬虫

百度贴吧帖子爬虫

时间:2024-04-26 21:22:25浏览次数:21  
标签:utf text 爬虫 replace 帖子 bad etree pos2 百度

想把以前喜欢的帖子爬下来,代码存档于2024.4.26,不知道能用多久。

import requests
from lxml import etree


#移除链接、图片的标签
def removeTag(text):
    tree = etree.fromstring(text)
    for bad in tree.xpath("//a"):
        bad.getparent().remove(bad)
    for bad in tree.xpath("//img"):
        bad.getparent().remove(bad)
    return etree.tostring(tree, encoding="utf-8").decode('utf-8')


#获取内容并清洗
def getContent(url):
    r = requests.get(url=url)
    r.encoding = "utf-8"
    html = etree.HTML(r.text)
    res1 = html.xpath("//div[@class='d_post_content j_d_post_content ']")
    res2 = []
    for ele in res1:
        s = etree.tostring(ele, encoding="utf-8").decode('utf-8')
        s = removeTag(s)
        pos = s.find(">")
        s = s[pos + 1:]
        pos2 = 0
        while s[pos2] == ' ':
            pos2 = pos2 + 1
        s = s[pos2:]
        s = s.replace("</div>", "")

        s = s.replace("<br/>", "\n")
        s = s.replace("<strong>", "")
        s = s.replace("</strong>", "")
        s = s.replace("</span>", "")
        s = s.replace('''<span class="edit_font_color">''', "")
        s = s.replace("&lt;", "")
        s = s.replace("&gt;", "")
        # s = s.replace("</strong>", "")
        # s = s.replace("</span>", "")
        res2.append(s)
    return res2


#写回txt
def writePage(text, filename):
    with open(filename, "a", encoding="utf-8") as f:
        for ele in text:
            f.write(ele + '\n')


if __name__ == "__main__":
    #需要填写的东西
    #这是帖子网址,记得把pn=后面的数字删了
    url = "https://tieba.baidu.com/p/xxxxxxx?see_lz=1&pn="
    #这是文件名
    filename = "xxx.txt"
    #这是起止页数,爬虫爬到的应该是浏览器看到的页数的2倍
    st=1
    ed=10

    for i in range(st, ed + 1):
        url2 = url + str(i)
        text = getContent(url2)
        if text == "null":
            break
        writePage(text, filename)
    print("end.")

贴吧17年死了一次后面又活了,但好些楼没恢复。那些初中水的贴闭着眼睛还能想起镇楼图什么样,一抬眼却要大学毕业了。

标签:utf,text,爬虫,replace,帖子,bad,etree,pos2,百度
From: https://www.cnblogs.com/capterlliar/p/18160892

相关文章

  • 爬虫
    requests官方中文文档:https://2.python-requests.org/zh_CN/latest/requests在爬虫中一般用于来处理网络请求#导入requests模块importrequests#尝试向baidu发起请求,获得来命名为r的response对象r=requests.get('https://www.baidu.com/')#返回请求状态码,200......
  • 爬虫 1(入门基础)
    爬虫1(入门基础)一、什么是爬虫通过编写代码,模拟正常用户使用浏览器的过程,使其能够在互联网自动进行数据抓取二、HTTP协议三、URL是什么URL:资源定位符,是用于完整地描述Internet上网页和其他资源的地址的一种标识方法四、Header请求头五、请求头参数的含义六、req......
  • 爬虫2(页面解析和数据提取)
    爬虫2(页面解析和数据提取)处理HTML文件,常用Xpath,先将HTML文件转换成XML文档,然后用Xpath查找HTML节点或元素。一、HTML与XML二、XPath1、XPath路径表达式三、Lxml库html=etree.HTML(text)#将字符串转换成HTML格式#print(etree.tostring(html))#补全HTMLres......
  • 通过百度地图地理查询和逆地址查询
    #coding:utf-8fromurllib.requestimportquoteimportrequestsimportpandasaspdpd.set_option('display.width',1000)pd.set_option('display.max_columns',None)importjson#通过百度地图地理查询和逆地址查询defget_location(address):try......
  • JS之调用百度地图接口进行打卡
    调用百度地图接口进行打卡1.在百度地图开放平台申请AK2.在index.html导入百度地图SDK(此AK值为假)<scripttype="text/javascript"src="https://api.map.baidu.com/api?v=2.0&ak=f029hEOpyCQnXySQsug94D1yUU0Yil"></script>3.新增coordTransform.js//定义一些常量varx_PI......
  • 爬虫 第二篇 纵观
    继上篇文章采集图片后,有朋友问采集就这么简单吗?当然NoNoNo!!!!获取数据的渠道多种多样,根据需求,可以从小程序、PC、h5、app、官方接口等等获取数据。当然你从别人的地方获取数据,别人哪儿能那么轻易的让你获取到数据呢!所以就出现了各种反爬!我简单总结了几种......对UA的检......
  • 百度的代码,Comate写了27%。诚邀你来测评,获取丰厚好礼!
    4月16日,在Create2024百度AI开发者大会上发表的《人人都是开发者》主题演讲中,李彦宏指出:“百度每天新增的代码中,已经有27%是由Comate生成的。”是的!Comate被老板表扬啦!BaiduComate智能代码助手,和百度的工程师们共同完成了27%的代码!而现在,Comate还走入了喜马拉雅、三菱电梯、......
  • 爬虫js逆向(python调用js学习)
    首先介绍pyexecjs的使用PyExecJs是一个python库,用于在Python环境中执行javaScript代码。它实际上是对Execs库的Python封装,Execls本身是一个通用的JavaScript运行环境的抽象层。使用PyExecJs,你可以在Python中执行JavaScript代码,而无需启动一个完整的JavaScript解释器......
  • 股票数据爬虫
    东方财富网-数据中心——爬虫项目0x00起因MaMa看到别人有个软件,可以直接把一个网站上的数据全部爬进一个Excel里边,但是那个人不给这个软件,所以她怂恿我写一个。。。0x01需求千股千评_数据中心_东方财富网(eastmoney.com)对于里边的00~60开头的股票,把股票代码、涨......
  • python爬虫—学习笔记-4
    课堂内容:删除原导出文件的venv,pycham打开此文夹,重新创建本地虚拟编译器。安装依赖库,打开pycham终端输入pipinstall-ryilaiku.txt,安装依赖库中的库。继续安装bs4、lxml库,命令为:pipinstallbs4和pipinstalllxml。安装好后,pycham来到spiders目录下,新建Python......