python爬取微博代码
时间: 2023-10-03 14:02:09 浏览: 24
以下是使用 Python3 和 requests 库来爬取微博的示例代码:
```
import requests
from bs4 import BeautifulSoup
# 设置请求头
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'}
# 目标微博的 URL
url = 'https://weibo.com/u/1234567890'
# 发送 GET 请求,获取响应内容
response = requests.get(url, headers=headers)
# 解析响应内容
soup = BeautifulSoup(response.text, 'html.parser')
# 获取微博内容
weibo_content = soup.find('div', class_='WB_text W_f14').text.strip()
print(weibo_content)
```
在上面的代码中,我们首先设置了请求头,以模拟浏览器发送请求。然后发送 GET 请求,获取响应内容,最后使用 BeautifulSoup 解析响应内容,找到目标微博的内容。
相关问题
python爬取微博评论代码
好的,以下是一个简单的Python爬取微博评论的代码示例:
```python
import requests
import json
# 设置请求头信息
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'}
# 定义一个函数,用于获取微博评论
def get_comments(id):
# 构造请求URL
url = 'https://m.weibo.cn/comments/hotflow?id=' + str(id) + '&mid=' + str(id) + '&max_id_type=0'
# 发送GET请求
response = requests.get(url, headers=headers)
# 解析JSON数据
data = json.loads(response.text)
# 提取评论信息
comments = []
for comment in data['data']['data']:
comments.append(comment['text'])
return comments
# 调用函数获取微博评论
comments = get_comments(1234567890)
print(comments)
```
其中,`id`参数是微博的ID,可以从微博页面的URL中获取。该代码使用了requests库发送HTTP请求,并使用json库解析返回的JSON数据,提取出评论信息并返回。注意,爬取微博评论需要登录账号并且需要一定的反爬技巧,这里只提供一个简单的示例供参考。
python爬取微博关键词代码
以下是Python爬取微博关键词的代码示例:
```python
import requests
from bs4 import BeautifulSoup
import jieba
from wordcloud import WordCloud
# 设置请求头
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'}
# 获取搜索结果页面
def get_page(keyword, page):
url = 'https://s.weibo.com/weibo?q=' + keyword + '&page=' + str(page)
response = requests.get(url, headers=headers)
return response.text
# 解析搜索结果页面,获取微博内容
def get_content(html):
soup = BeautifulSoup(html, 'html.parser')
content_list = soup.find_all('p', class_='txt')
content = ''
for item in content_list:
content += item.text.strip()
return content
# 对微博内容进行分词
def cut_words(content):
word_list = jieba.cut(content)
words = ' '.join(word_list)
return words
# 生成词云图片
def generate_wordcloud(words):
wc = WordCloud(background_color='white', width=800, height=600, max_words=200, font_path='msyh.ttc')
wc.generate(words)
wc.to_file('wordcloud.png')
# 主函数
def main():
keyword = input('请输入要搜索的关键词:')
page = int(input('请输入要搜索的页数:'))
content = ''
for i in range(1, page+1):
html = get_page(keyword, i)
content += get_content(html)
words = cut_words(content)
generate_wordcloud(words)
if __name__ == '__main__':
main()
```
以上代码可以实现输入关键词和页数,然后爬取对应页数的微博内容,对内容进行分词并生成词云图片。需要注意的是,爬取微博数据需要登录账号并获取cookie,否则会被反爬虫机制拦截。
阅读全文