抱歉给您带来了困扰。让我们仔细看一下代码,并明确指出一些需要修正的问题:
1. **列表初始化**:您需要在`get_content`函数中正确初始化`comments`列表,目前代码中这一行遗漏了变量的初始化。
2. **HTML结构**:确保使用的`class`名是正确的。在使用`BeautifulSoup`时,`find_all`中指定的`class`名需要完全匹配目标网页中的实际`HTML`结构。可能需要再次检查百度贴吧中帖子的列表项标签的真实`class`名。
liTags = soup.find_all('li', class_='j_thread_list clearfix thread_item_box')
3. **注释和逻辑问题**:在解析帖子信息时,当前代码中您将多个属性分配给同一个`comment`变量,这会导致信息覆盖。`comment`应该是一个字典,要在字典中以正确的键存储每个信息。
for li in liTags:
comment = {}
try:
title_tag = li.find('a', class_='j_th_tit')
comment['title'] = title_tag.text.strip()
comment['link'] = "http://tieba.baidu.com" + title_tag['href']
author_tag = li.find('a', class_='frs-author-name j_user_card')
comment['author'] = author_tag.text.strip()
time_tag = li.find('span', class_='threadlist_reply_date pull_right j_reply_data')
comment['time'] = time_tag.text.strip()
reply_num_tag = li.find('span', class_='threadlist_rep_num center_text')
comment['reply_num'] = reply_num_tag.text.strip()
comments.append(comment)
except Exception as e:
print("Error parsing comment:", e)
4. **输出文件格式**:在将信息输出到文件时,确保在`Out2File`函数中正确访问字典中的值:
def Out2File(comments):
with open('TTBT.txt', 'w', encoding='utf-8') as f:
for comment in comments:
f.write('标题: {} \t 链接:{} \t 发帖人:{} \t 发帖时间:{} \t 回复数量: {}\n'.format(
comment['title'], comment['link'], comment['author'], comment['time'], comment['reply_num']))
print('当前页面爬取完成')
请确保按上面所述检查这些地方,这应该能帮助您获取到期望的数据。如果问题仍然存在,请进一步描述具体的错误信息或问题,我会继续为您提供帮助。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |