首页 > 代码库 > python抓取新浪微博评论并分析
python抓取新浪微博评论并分析
1,实现效果
2,数据库
3,主要步骤
1,输入账号密码,模拟新浪微博登陆
2,抓取评论页的内容
3,用正则表达式过滤出用户名,评论时间和评论内容
4,将得到的内容存入数据库
5,用SQL语句实现其他功能:例如统计评论次数等
4,详细步骤
# -*- coding: utf-8 -*- import requests import base64 import re import urllib import rsa import json import binascii import MySQLdb class Userlogin: def userlogin(self,username,password,pagecount): session = requests.Session() url_prelogin = 'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.5)&_=1364875106625' url_login = 'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.5)' #get servertime,nonce, pubkey,rsakv resp = session.get(url_prelogin) json_data = http://www.mamicode.com/re.search('/((.*)/)', resp.content).group(1)>
从数据库获取评论并分析:# -*- encoding:utf-8 -*- __author__ = 'lanzao' import MySQLdb class OutboxAnalysis: def getMost(self,num):<span style="white-space:pre"> </span>#查看评论最多的前num个人 conn = MySQLdb.connect(host='localhost',user='root',passwd='root',db='weiboanalysis',charset='utf8') curs = conn.cursor() sql=""" select uid,uname,count(uname) as count from outbox group by uname order by count(uname) desc limit %d; """% int(num) curs.execute(sql) conn.commit() print "******************评论次数排行榜************************" for item in curs.fetchall(): print item[1]+" ",str(item[2])+"次" print "*******************************************************" curs.close() conn.close() def getUser(self,user):<span style="white-space:pre"> </span>#查看某用户评论 conn = MySQLdb.connect(host='localhost',user='root',passwd='root',db='weiboanalysis',charset='utf8') curs = conn.cursor() curs.execute("""select * from outbox where uname='%s'"""%user) print "*****************************************" for item in curs.fetchall(): print item[1]+" ",item[2]+" ",item[3] print "*****************************************" curs.close() conn.close()程序入口:# -*- encoding:utf-8 -*- __author__ = 'lanzao' from OutboxAnalysis import OutboxAnalysis from UserLogin import Userlogin; def menu(): print""" 选择你想要的功能: 0,退出 1,查询评论数最多的人 2,查询某用户的所有评论 3,登陆微博并抓取评论 """ def menuChoice(): choice = raw_input("输入你的选择(0/1/2/3):") while choice != '0': if choice == '3': username = raw_input("输入新浪微博账号:") password = raw_input("输入密码:") pagecount = raw_input("输入想要抓取评论的页数:") o = Userlogin() o.userlogin(username=username,password=password,pagecount=pagecount) print "抓取完毕" choice = raw_input("输入你的选择(0/1/2/3):") elif choice == '1': num = raw_input("你想查看前几个人?请输入数字:") o = OutboxAnalysis() o.getMost(num) choice = raw_input("输入你的选择(0/1/2/3):") elif choice == '2': name = raw_input("你想查看谁的评论:") o = OutboxAnalysis() o.getUser(name) choice = raw_input("输入你的选择(0/1/2/3):") else: print """choice=%s"""%choice print "输入无效" choice = raw_input("输入你的选择(0/1/2/3):") menu() menuChoice()5,相应模块的安装
import requests
import base64
import re
import urllib
import rsa
import json
import binascii
import MySQLdb
推荐好用的Python的包管理工具:pip
安装PIP的教程网上很多,装好后,直接在CMD的黑窗口里用命令pip install xxx就能方便得下载安装某模块啦~
本人新手菜鸟一只,如果有什么地方没有写好或者写错的地方,欢迎各位红领巾批评指出。所有代码基本都贴出来了,如果有什么疑惑,也很欢迎一起讨论,共同进步
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。