技术人员教你抓取微博内容并建立数据库 (抓取微博内容数据库)

社交媒体已经成为了人们日常生活和交流的主要渠道,微博作为社交媒体中的一员,更是被广泛应用。对于一些需要获取微博内容并了解用户态度和观点的人来说,如政治分析师、市场调查员和企业监控专员等,抓取微博内容并将其转换为可分析的数据是非常必要的。在这篇文章中,我将介绍如何用Python爬虫抓取微博内容并建立数据库。

1. 确定需求

在开始编写代码之前,首先需要明确自己的需求。我们需要什么样的信息?我们要如何筛选内容?最终的数据格式应该是什么样的?这些问题的答案将直接影响到爬虫的设计。

在本次示范中,我们需要抓取包括文本、图片、视频等在内的微博内容,包括用户ID、发布时间、点赞数、评论数、转发数及内容标签等信息,并将其存储在MySQL数据库中,方便后续处理和分析。

2. 准备工作

在开始编写代码之前,我们需要做一些准备工作:

– 下载并安装Python3和MySQL

– 安装必要的Python包:pandas、numpy、requests、beautifulsoup、pymysql和re

– 获取微博API

3. 编写代码

接下来,我们将编写抓取微博内容并存储至数据库的代码,具体操作如下:

import pandas as pd

import numpy as np

import requests

import re

import pymysql

from bs4 import BeautifulSoup

from datetime import datetime

# 输入微博用户名和密码

username = ‘your_username’

password = ‘your_password’

# 登录微博

session = requests.session()

login_url = ‘https://passport.weibo.cn/signin/login’

login_data = {‘username’: username, ‘password’: password}

session.post(login_url, data=login_data)

# 获取微博信息

def get_weibo_info(uid):

weibo_url = f’https://m.weibo.cn/api/contner/getIndex?uid={uid}&luicode=10000011&lfid=230283{uid}&fid=100103{uid}&type=uid&value={uid}&contnerid=107603{uid}’

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’}

r = session.get(weibo_url, headers=headers)

data = r.json()[‘data’][‘cards’]

infos = []

for d in data:

if not ‘mblog’ in d.keys():

continue

else:

mblog = d[‘mblog’]

weibo_info = {}

weibo_info[‘id’] = mblog[‘id’]

weibo_info[‘time’] = datetime.strptime(mblog[‘created_at’],

‘%a %b %d %H:%M:%S +0800 %Y’)

weibo_info[‘text’] = BeautifulSoup(mblog[‘text’], ‘html.parser’).get_text()

weibo_info[‘scheme’] = f”https://m.weibo.cn/detl/{weibo_info[‘id’]}”

weibo_info[‘like’] = mblog[“attitudes_count”]

weibo_info[‘repost’] = mblog[‘reposts_count’]

weibo_info[‘comment’] = mblog[‘comments_count’]

weibo_info[‘source’] = BeautifulSoup(mblog[‘source’], ‘html.parser’).get_text()

weibo_info[‘is_video’] = False

if ‘page_info’ in mblog.keys():

if mblog[‘page_info’][‘type’] == “video”:

weibo_info[‘is_video’] = True

weibo_info[‘video_url’] = mblog[‘page_info’][‘media_info’][‘url’]

if ‘pics’ in mblog.keys():

images = []

for i in mblog[‘pics’]:

images.append(i[‘large’][‘url’])

weibo_info[‘images’] = ‘,’.join(images)

else:

weibo_info[‘images’] = ”

infos.append(weibo_info)

return infos

# 建立MySQL连接

conn = pymysql.connect(host=’localhost’, port=3306, user=’root’, passwd=’your_pass’, db=’weibo_info’,charset=’utf8′)

cursor = conn.cursor()

# 获取微博用户ID列表

uid_list = [‘11111’, ‘22222’, ‘33333’]

# 抓取微博信息并存储至数据库

for uid in uid_list:

df = pd.DataFrame(get_weibo_info(uid))

df[‘uid’] = uid

if df.empty:

continue

else:

for i, row in df.iterrows():

sql = f”INSERT INTO weibo (id, uid, time, text, scheme, like, repost, comment, source, is_video, video_url, images) VALUES (‘{row.id}’, ‘{row.uid}’, ‘{row.time}’, ‘{row.text}’, ‘{row.scheme}’, ‘{row.like}’, ‘{row.repost}’, ‘{row.comment}’, ‘{row.source}’, ‘{row.is_video}’, ‘{row.video_url}’, ‘{row.images}’)”

cursor.execute(sql)

conn.commit()

print(f”微博{row.id}已存储至数据库”)

# 关闭连接

cursor.close()

conn.close()

4. 运行代码

将上述代码存储在.py文件中并运行,即可抓取微博内容并存储至MySQL数据库中,方便后续处理和分析。

本篇文章中,我们介绍了如何用Python爬虫抓取微博内容并建立数据库。抓取微博内容可以让我们了解用户态度和观点,以及产品、品牌或新闻等在社交媒体上的影响和反馈。通过以上步骤并按需求筛选内容,我们可以获取到更为丰富、全面的微博数据,来更好的为我们提供参考和帮助。


数据运维技术 » 技术人员教你抓取微博内容并建立数据库 (抓取微博内容数据库)