利用requests库和正则表达式,提取百度贴吧某一热门帖(回帖数量不小于200)的发帖人、发帖时间、发帖内容、楼层数、点赞数等信息,并将提取的数据保存到本地文件或打印出来。
时间: 2024-09-12 19:10:54 浏览: 33
首先,你需要安装`requests`和`re`(正则表达式)库,如果还没有安装,可以使用以下命令进行安装:
```bash
pip install requests
```
接下来,我们可以编写一个脚本来从百度贴吧帖子页面提取所需信息。由于百度贴吧的具体API和结构可能会经常变化,这里我会提供一个基本的示例,说明如何获取HTML并尝试提取信息。请注意,这只是一个基本的示例,实际操作可能需要根据具体的网页结构调整正则表达式。
```python
import requests
import re
# 假设我们有一个帖子的URL
post_url = "https://tieba.baidu.com/p/XXXXX" # 用实际的帖子ID替换XXXXX
def extract_info(url):
response = requests.get(url)
# 提取HTML内容
html_content = response.text
# 正则表达式模式,根据实际情况调整
# 发帖人
poster_pattern = r'<span class="username">(.*?)</span>'
poster = re.search(poster_pattern, html_content).group(1)
# 发帖时间
post_time_pattern = r'发布时间:(.*?)</i>'
post_time = re.search(post_time_pattern, html_content).group(1)
# 发帖内容
content_pattern = r'<div class="j_t">.*?</div>'
content = re.search(content_pattern, html_content).group(0)
# 楼层数
# 需要查看HTML源码确定楼层数在哪里,通常在帖子链接后面
layer_number = url.split("/")[-2]
# 点赞数
like_count_pattern = r'顶\[([\d,]+)\]'
like_count = re.search(like_count_pattern, html_content).group(1).replace(",", "")
return poster, post_time, content, int(layer_number), like_count
# 提取数据
info = extract_info(post_url)
# 选择存储方式,这里以CSV为例
import csv
with open('post_data.csv', 'w', newline='', encoding='utf-8') as csvfile:
fieldnames = ['Poster', 'Post Time', 'Content', 'Layer Number', 'Like Count']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writerow(info)
# 或者直接打印出来
print(f"发帖人: {info[0]}")
print(f"发帖时间: {info[1]}")
print(f"发帖内容: {info[2]}")
print(f"楼层数: {info[3]}")
print(f"点赞数: {info[4]}")