以下是一个简单的利用 Python 编写百度贴吧爬虫的示例代码:
pythonimport requests
from bs4 import BeautifulSoup
class BaiduBarcrawler:
def __init__(self, forum_url):
self.forum_url = forum_url
self.browser = requests.session()
def get_html(self, url):
return self.browser.get(url).text
def get_post_list(self, page_num=1):
# 获取帖子列表页面
forum_page_url = self.forum_url + '?page=' + str(page_num)
html = self.get_html(forum_page_url)
soup = BeautifulSoup(html, 'lxml')
# 获取每个帖子的信息
post_list = []
for post in soup.find_all('div', class_='mod thread'):
# 帖子标题
title = post.find('h3').text
# 帖子作者
author = post.find('span', class_='username').text
# 帖子时间
post_time = post.find('span', class_='post-time').text
# 帖子内容
content = post.find('div', class_='post-content').text
post_list.append((title, author, post_time, content))
return post_list
if __name__ == '__main__':
crawler = BaiduBarcrawler('https://tieba.baidu.com/f?kw=%E4%B8%AD%E5%9B%BD%E5%90%8A%E8%BF%99%E4%B8%AA%E5%A4%A9%E6%9C%88&ie=utf-8&page=1')
post_list = crawler.get_post_list()
for title, author, post_time, content in post_list:
print(f'Title: {title}\nAuthor: {author}\nPost Time: {post_time}\nContent: {content}\n')
该示例代码使用了 requests
和 BeautifulSoup
库,其中 __init__
方法初始化了爬虫对象,包括百度贴吧页面的 URL 和用于发送 HTTP 请求的浏览器 session;get_html
方法用于获取指定 URL 的 HTML 页面内容;get_post_list
方法用于获取指定页码的帖子列表,默认获取第一页的帖子列表,并返回一个包含每个帖子的标题、作者、时间和内容的列表。最后在 main
方法中实例化 BaiduBarcrawler 对象,并调用 get_post_list
方法获取帖子列表,并逐个打印每个帖子的信息。