爬取微博评论数据python代码
时间: 2024-06-17 13:04:50 浏览: 189
要爬取微博评论数据,需要使用 Python 中的第三方库 requests 和 BeautifulSoup 来模拟浏览器发送请求和解析网页。具体步骤如下:
1. 打开浏览器,在微博网页上找到要爬取的微博,复制该微博的 URL。
2. 使用 requests 库向该 URL 发送请求,获取微博页面的 HTML 内容。
3. 使用 BeautifulSoup 库对 HTML 内容进行解析,找到微博评论区的 HTML 标签和属性。
4. 模拟登录微博,获取 cookies。将 cookies 添加到请求头中,以免被反爬虫机制拦截。
5. 根据 HTML 标签和属性,使用 BeautifulSoup 库找到评论区的每个评论,获取评论的用户名、评论时间和评论内容。
6. 将获取的评论保存到本地或数据库中。
以下是一个简单的示例代码:
```
import requests
from bs4 import BeautifulSoup
# 获取微博页面 HTML 内容
url = "https://weibo.com/xxxxx" # 替换为要爬取的微博 URL
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
"Cookie": "xxx" # 替换为自己的微博 cookies
}
response = requests.get(url, headers=headers)
html = response.text
# 使用 BeautifulSoup 解析 HTML 内容,找到评论区标签和属性
soup = BeautifulSoup(html, "lxml")
comment_list = soup.find_all("div", attrs={"node-type": "comment_list"})
# 获取评论信息
for comment in comment_list:
user_name = comment.find("a", attrs={"class": "name"}).text # 用户名
comment_time = comment.find("a", attrs={"class": "date"}).text # 评论时间
comment_content = comment.find("div", attrs={"class": "WB_text"}).text.strip() # 评论内容
print(user_name, comment_time, comment_content)
# 保存评论信息
with open("comments.txt", "w", encoding="utf-8") as f:
for comment in comment_list:
user_name = comment.find("a", attrs={"class": "name"}).text
comment_time = comment.find("a", attrs={"class": "date"}).text
comment_content = comment.find("div", attrs={"class": "WB_text"}).text.strip()
f.write(user_name + "\t" + comment_time + "\t" + comment_content + "\n")
# 相关问题:
# 1. 如何使用 Python 爬取网页数据?
# 2. 如何使用 requests 发送 HTTP 请求?
# 3. 如何使用 BeautifulSoup 解析 HTML 内容?
阅读全文