寒假期间做微博数据统计,由于是部门要求,也没办法,自己又是一个懒人,直接用python实现吧。写的很粗糙,也很差,请大家别介意。
总的来说分成两个模块:一个爬取微博数据存入数据库,一个从数据库调取数据放入excel表格中。还有一个config文件,由于每周值班人员几乎都在变动以及日期也都是从周一到周日,由于某些原因不能做实时数据统计,所以需要config文件设置代码中的部分情况。注意我在mysql中是提前建立表的,而我放假回来后,莫名其妙mysql某个配置文件丢失,导致我花了很久才重装了,数据也都丢失了。
平心而论,代码很简单,但值得注意的是要关注爬取数据中的不同点:
微博数据客户端与手机端获取数据有差,有部分数据丢失。
import requests
import time
import pymysql
import re
from pyquery import PyQuery as py
db = pymysql.connect('localhost', 'root', '123456', 'hfut_weibo',use_unicode=True, charset="utf8")
cursor = db.cursor()
cursor.execute('SET NAMES utf8;')
cursor.execute('SET CHARACTER SET utf8;')
cursor.execute('SET character_set_connection=utf8;')
headers = {'user-agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Mobile Safari/537.36'}
def mysql(date,attitudes_count,comments_count, reposts_count, index,title, data):
data = transferContent(data)
title = transferContent(title)
comtent = (
'#冰糖说英语#', '#冰糖点歌台#', '#冰糖小百科#', '#冰糖的树洞#', '#冰糖么么答#', '#冰糖赠书#', '#冰糖书影音#', '#老照片#', '#直播#',
'#送福利#')
for com in comtent:
parttern = re.compile(com)
match = re.search(parttern,title)
if match:
title = match.group()
print(data)
sql = '''
INSERT INTO inital_weibo_data_special VALUES ("%s",'%d','%d','%d','%f',"%s","%s")
''' % (date, attitudes_count, comments_count, reposts_count, index, title, data)
cursor.execute(sql)
db.commit()
return
sql = '''
INSERT INTO inital_weibo_data VALUES ('%s',"%d","%d",'%d','%f',"%s","%s")
''' %