python微博 关键词 爬虫
要使用Python创建一个微博关键词爬虫,你可以使用requests
来获取网页内容,BeautifulSoup
来解析网页,以及pandas
来存储数据。以下是一个简单的示例,用于爬取微博搜索结果页面的用户名和用户id。
首先,安装所需库:
pip install requests pandas beautifulsoup4 lxml
然后,编写爬虫代码:
import requests
from bs4 import BeautifulSoup
import pandas as pd
def crawl_weibo(keyword):
# 微博搜索URL
base_url = 'https://s.weibo.com/weibo/'
# 参数,可以添加更多以支持分页等
params = {
'q': keyword,
'Refer': 'SWeibo_box'
}
# 存储数据的DataFrame
df = pd.DataFrame(columns=['用户名', '用户id'])
# 循环抓取页面,微博搜索结果一般有多页
for page in range(1, 11): # 这里只爬取前10页,你可以根据需要爬取更多页
params['page'] = page
response = requests.get(base_url, params=params)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'lxml')
# 微博用户信息在 <div class="card-profile">
cards = soup.find_all('div', class_='card-wrap')
for card in cards:
profile = card.find('div', class_='card-profile')
if profile:
user_name = profile.find('a', class_='name').text.strip()
user_id = profile.find('span', class_='g-link').text.strip()
df.loc[len(df)] = [user_name, user_id]
else:
print(f'Error occurred while crawling page {page}')
return df
# 使用关键词"python"作为示例
keyword = 'python'
df = crawl_weibo(keyword)
print(df)
请注意,微博有一定的反爬机制,这段代码可能无法长时间稳定地工作,特别是如果搜索关键词频繁变化或者爬取量大的时候。此外,未经微博官方授权,这种爬虫行为可能违反微博的使用条款,使用时需要谨慎。
评论已关闭