用python写一个完整的爬虫代码,爬虫可以爬取微博的图片、内容、点赞数、评论数,并将内容、点赞数、评论数保存为CSV格式
时间: 2024-06-09 11:08:23 浏览: 216
好的,以下是一个简单的爬取微博图片、内容、点赞数、评论数并保存为CSV格式的爬虫代码:
```python
import requests
import csv
from bs4 import BeautifulSoup
# 微博账号的cookie,需要自己登录微博获取
cookie = ''
# 微博用户的uid,需要自己去该用户的主页获取
uid = ''
# 爬取的微博页数
pages = 5
# 设置请求头
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': cookie
}
# 存储爬取的数据
data = []
# 循环爬取每一页的数据
for page in range(1, pages+1):
# 构造请求url
url = f'https://m.weibo.cn/api/container/getIndex?containerid=107603{uid}&page={page}'
# 发送请求
response = requests.get(url, headers=headers)
# 解析json数据
json_data = response.json()
# 获取微博列表
cards = json_data['data']['cards']
# 循环爬取每一条微博的数据
for card in cards:
# 判断是否为微博类型
if card['card_type'] == 9:
# 获取微博id
mblog_id = card['mblog']['id']
# 获取微博内容
text = card['mblog']['text']
# 获取微博点赞数
like_count = card['mblog']['attitudes_count']
# 获取微博评论数
comment_count = card['mblog']['comments_count']
# 获取微博图片
pics = card['mblog'].get('pics', [])
pic_urls = []
for pic in pics:
pic_url = pic['large']['url']
pic_urls.append(pic_url)
# 将微博数据添加到data列表中
data.append([mblog_id, text, like_count, comment_count, pic_urls])
# 将爬取的数据保存为CSV格式
with open('weibo.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerow(['微博id', '微博内容', '点赞数', '评论数', '图片链接'])
for item in data:
writer.writerow(item)
```
需要注意的是,该爬虫需要使用你自己的微博账号cookie和要爬取的用户的uid,可以在浏览器中登录微博后,打开该用户的主页并在开发者工具中查看请求头和请求url,从中获取cookie和uid。另外,该爬虫只能爬取微博的前5页数据,如需更多数据需要修改代码。
阅读全文