程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

半自动化爬虫:在百度贴吧上保存网页,通过python爬取相关信息

hfteth 2025-05-08 01:06:30 技术文章 4 ℃

1、需求背景:

在百度贴吧上选取一页帖子,点击右键查看源代码,将源代码保存为txt文件,通过python实现从该页面中抓取帖子的标题,作者,时间等信息,将结果保存为excel表格

2、关键技术实现:

python、正则表达式、txt文件读取、excel文件写入

3、代码实现:

import re
import csv

resultList = []
# 读取已经保存的文件内容
with open("baidutieba.txt", 'r', encoding="UTF-8") as f:
    source = f.read()

#以下通过正则表达式进行相关的匹配,获取标题,作者,时间等信息
#原始文件是:<a rel="noopener" href="/p/7864139938" title="女高专一发展" target="_blank" class="j_th_tit ">女高专一发展</a>
titleRE = r'<a rel="noopener" href="/p/\d*" title="(.*?)" target='
titleList = re.findall(titleRE,source,re.S)
#原始文件是:title="主题作者: 五条永远滴神"
authorRE = 'title="主题作者: (.*?)"'
authorList = re.findall(authorRE,source,re.S)
#原始文件是:<span class="pull-right is_show_create_time" title="创建时间">18:48</span>
timeRE = '" title="创建时间">(.*?)</span>'
timeList = re.findall(timeRE,source,re.S)

#将如上的结果添加到列表里,便于后续写入到CSV格式的文档里
for i in range(len(titleList)):
    result = {
        "title": titleList[i],
        "author": authorList[i],
        "time": timeList[i]
    }
    resultList.append(result)

#将文件写入到excel表格里
with open('baidutieba.csv', 'w', encoding='utf-8-sig') as f:
    writer = csv.DictWriter(f, fieldnames=['title','author','time'])
    writer.writeheader()
    writer.writerows(resultList)

4、运行代码,查看输出的 baidutieba.csv 文件,发现虽然能写入正确的内容,但是出现了换行。如下:

5、解决输出多加了空行的方法:

将源代码中:

with open('baidutieba.csv', 'w', encoding='utf-8-sig') as f:

修改为:

with open('baidutieba.csv', 'w', encoding='utf-8-sig', newline='') as f:

再次运行,出现的页面如图,空行问题已经解决:

最近发表
标签列表