基于 Python 的新浪微博数据爬虫

合集下载

基于Python的新浪微博用户信息爬取与分析

基于Python的新浪微博用户信息爬取与分析
1 爬虫系统设计
该爬虫程序的工作流程如图1所示,主要步骤为:
(1)登录微博:新浪微博要求用户访问微博数据之前必须登 录,那么爬虫程序面临的首要任务是模拟登录。本文利用Cookie 的特性,事先通过浏览器的方式,登录新浪微博,并正确输入用户 名、口令,从而事先浏览器的登录;当成功登陆后,新浪微博服务 器会记录登录的状态,经加密后,使用Response的方式,发送给 客户端,从而存储于本地客户端的Cookie中。当本文编写的Pyth o n 爬虫, 需要登录新浪微博时, 首先读取已存储于本地的 C o o k i e , 并发送 给新 浪微 博服 务器。而该 服务 器检 查这个 Cookie,可以认定客户端的合法身份,从而实现用户对新浪微博 的成功登录。(2)访问待抓取页面:该模块访问被抓取微博用户的 各类信息界面,利用Requests库下载待抓取页面的html代码。(3) 下载、解析、抽取信息:使用lxml等python库解析页面,并根据预 先定制的规则,抽取有关信息。(4)根据第(3)步骤的信息提取结 果,如若信息内具有下一次待抓取的页面链接,则回至网页下载 模块,重新进行下载、解析。(5)保存至数据库:待抓取完毕后,将 所有信息保存至数据库。
本文使用Python语言,通过模拟用户登录,实现一种针对新浪 微博的爬虫,并对获得的数据进行有效地分析。该文设计并实现了 新浪微博爬虫程序,以微博用户“央视综艺国家宝藏”为例,对他发 布的微博内容进行了全部抓取,并从微博发布行为、微博信息特征、 微博关键词等方面,进行了数据分析,为用户分析与画像打下基础。
本文设计并实现了一个微博用户信息爬取与分析系统利用cookie实现了用户的模拟登录使用python语言的rquestslxml等函数库爬取处理了该微博用户数据并以央视综艺国家宝藏为例从微博发布动作偏好微博信息特征微博关键词等方面展开了分析获取了一些有趣的发现为进一步用户分析与画像打下基础

基于Python的新浪微博数据爬虫

基于Python的新浪微博数据爬虫

基于Python的新浪微博数据爬虫作者:周中华张惠然谢江来源:《计算机应用》2014年第11期摘要:目前很多的社交网络研究都是采用国外的平台数据,而国内的新浪微博没有很好的接口方便研究人员采集数据进行分析。

为了快速地获取到微博中的数据,开发了一款支持并行的微博数据抓取工具。

该工具可以实时抓取微博中指定用户的粉丝信息、微博正文等内容;该工具利用关键字匹配技术,匹配符合规定条件的微博,并抓取相关内容;该工具支持并行抓取,可以同时抓取多个用户的信息。

最后将串行微博爬虫工具和其并行版本进行对比,并使用该工具对部分微博数据作了一个关于流感问题的分析。

实验结果显示:并行爬虫拥有较好的加速比,可以快速地获取数据,并且这些数据具有实时性和准确性。

关键词:新浪微博;爬虫;Python;并行;大数据中图分类号: TP391;TP311 文献标志码:A0 引言计算机技术的进步使人们的生活方式逐渐发生改变,社交网络就是一个非常突出的例子。

越来越多的人参与到社交网络平台中去,与他人互动,分享各种内容。

在大数据时代来临之际,社交网络就像一个巨大的宝库,吸引了大量的研究人员参与到相关内容的研究。

在国外,人们针对Twitter、Facebook等知名社交平台展开了一系列的分析[1-5],但是针对国内社交网络平台的研究[6-9]还比较欠缺:一方面因为相关研究刚刚起步,缺乏相关的研究方法;另一方面缺乏相关的研究数据,使得一些研究难以开展。

在国外Twitter等社交平台会提供一些数据接口供研究人员获取研究数据,但是在国内却无法正常访问这些接口。

国内由新浪网推出的新浪微博堪称中国的Twitter。

截至2013年3月,微博用户数已达5.56亿,日活跃用户数超5000万。

如此之大的一个社交平台为社交网络分析、网络数据挖掘等研究提供了强有力的大数据支持。

然而新浪微博官方并没有提供相关的数据接口,没有数据,一些研究分析工作也无法进行。

目前网络中也存在一些公开的微博数据集供人们下载,但是这些数据集通常规模比较小,而且还缺乏实时性。

微博爬虫python

微博爬虫python

微博爬⾍python本⽂爬取的是m站的微博内容,基于python 2.7⼀、微博内容爬取2.⼿机微博是看不到翻页,是⼀直往下加载的,但是其json格式的数据仍然以翻页的形式呈现。

3.打开开发者⼯具,向下翻页⾯,可以在Network下的XHR的响应⽂件中,找到json⽂件的⽹址。

通过分析发现每个JSON页⾯是有规律的,即前⾯的内容都⼀样,只是后⾯的页码不同;每个json页⾯的格式如下:⼀般情况下⼀个json页⾯有11微博评论(我只是查看了⼏个页⾯,所有的页⾯是不是这样,我没有去验证)知道json页⾯的组成规律,我们就可以爬⾍了4.微博内容爬取代码如下:# -*- coding: utf-8 -*-import requestsimport refrom fake_useragent import UserAgentimport pandas as pdua = UserAgent()headers = {'User-Agent':ua.random, # ua.random是随机⽣成⼀个User-Agent'Host': '','Referer': 'https:///p/1005053817188860?sudaref=',}def WriteInCsv(list):df = pd.DataFrame(list, columns=[u'微博内容链接', u'创建时间', u'id', u'微博内容',u'转发数', u'评论数', u'点赞数'])df.to_excel("content.xlsx", encoding="utf_8_sig", index=False)def getMblogContent():list = []bsae_url = 'https:///api/container/getIndex?uid=3817188860&luicode=10000011&lfid=100103type%3D1%26q%3DAlinda&containerid=1076033817188860&page=' for p in range(0, 149):try:url = bsae_url + p.__str__()resp = requests.get(url, headers=headers, timeout=10)JsonData = resp.json()data = JsonData.get('data').get('cards') # cards⾥包含此页⾯的所有微博内容print pfor d in data: # data是列表类型try:scheme = d['scheme']mblog = d['mblog'] # i是字典类型created_at = mblog['created_at'] # mblog也是页⾯⾥的⼀个容器名字,⼀个mblog表⽰⼀个微博id = mblog['idstr']text = re.sub(u"\\<.*?>", "", mblog['text']) # 去除<>标签⾥的内容print textreposts_count = mblog['reposts_count']comments_count = mblog['comments_count']attitudes_count = mblog['attitudes_count']list.append([scheme, created_at, id, text, reposts_count, comments_count, attitudes_count])except:print "error"except:print "打开页⾯错误"return listprint "OK"list = getMblogContent()WriteInCsv(list)5.代码说明:(1)本代码总共⽤了两个try。

pyhton爬虫爬取微博某个用户所有微博配图

pyhton爬虫爬取微博某个用户所有微博配图

pyhton爬⾍爬取微博某个⽤户所有微博配图前⼏天写了个java爬⾍爬花瓣⽹,但是事后总感觉不够舒服,终于在今天下午写了个python爬⾍(爬微博图⽚滴),写完之后就感觉舒服了,果然爬⾍就应该⽤python来写,哈哈(这⾥开个玩笑,⾮引战⾔论)。

话不多说进⼊正题。

1.分析页⾯这个页⾯是该博主的个⼈简介页⾯,直接拉到底,会有⼀个查看所有微博,点击它会跳转到该博主的所有微博页⾯接着往下滑页⾯继续观察该请求窗⼝,就会发现这个接⼝的参数的规律。

发现规律后就是⽼⼀套的模拟ajax加载获取多页数据,然后爬取⽬标内容。

该数据接⼝参数如下:(json数据可⾃⾏观察规律,很容易找到要爬的数据所在)2.开始写代码创建⼀个WbGrawler类,并在构造⽅法初始化固定参数,如下:class WbGrawler():def__init__(self):"""参数的初始化:return:"""self.baseurl = "https:///api/container/getIndex?containerid=2304131792328230&"self.headers = {"Host": "","Referer": "https:///p/2304131792328230","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36","X-Requested-with": "XMLHttpRequest"}# 图⽚保存路径self.path = "D:/weibosrc/"然后去写⼀个获取单个页⾯json数据的⽅法,因为变化的参数只有page,所以这⾥传⼊⼀个page即可,如下:def getPageJson(self,page):"""获取单个页⾯的json数据:param page:传⼊的page参数:return:返回页⾯响应的json数据"""url = self.baseurl + "page=%d"%pagetry:response = requests.get(url,self.headers)if response.status_code==200:return response.json()except requests.ConnectionError as e:print("error",e.args)拿到json数据后就要开始解析它并得到⽬标数据,所以这⾥写⼀个解析json数据的⽅法,传⼊⼀个json参数,如下:def parserJson(self, json):"""解析json数据得到⽬标数据:param json: 传⼊的json数据:return: 返回⽬标数据"""items = json.get("data").get("cards")for item in items:pics = item.get("mblog").get("pics")picList = []# 有些微博没有配图,所以需要加⼀个判断,⽅便后⾯遍历不会出错if pics is not None:for pic in pics:pic_dict = {}pic_dict["pid"] = pic.get("pid")pic_dict["url"] = pic.get("large").get("url")picList.append(pic_dict)yield picList这⾥返回的是⼀个个列表,列表⾥⾯的元素是存储图⽚信息的字典,得到图⽚信息后就可以开始下载了(最令⼈兴奋的下载环节),如下:def imgDownload(self,results):"""下载图⽚:param results::return:"""for result in results:for img_dict in result:img_name = img_dict.get("pid") + ".jpg"try:img_data = requests.get(img_dict.get("url")).content with open(self.path+img_name,"wb") as file:file.write(img_data)file.close()print(img_name+"\tdownload successed!")except Exception as e:print(img_name+"\tdownload failed!",e.args)3.程序的优化def startCrawler(self,page):page_json = self.getPageJson(page)results = self.parserJson(page_json)self.imgDownload(results)if__name__ == '__main__':wg = WbGrawler()pool = threadpool.ThreadPool(10)reqs = threadpool.makeRequests(wg.startCrawler,range(1,5)) [pool.putRequest(req) for req in reqs]pool.wait()4.写在最后。

基于Python的新浪微博爬虫程序设计与实现

基于Python的新浪微博爬虫程序设计与实现

基于Python的新浪微博爬虫程序设计与实现孙握瑜(安徽商贸职业技术学院信息与人工智能学院安徽芜湖241000)摘要:在互联网时代,各类新媒体平台出现使得信息数据得到广泛传播。

为加强对新浪微博内容的监管和分析,应对舆情分析的需求,该文主要研究采用Python语言设计新浪微博爬虫程序,在对网络爬虫基本概念和原理研究的基础上,设计了具有配置、爬取、存储、分析这4个功能模块的应用程序,为媒体内容监管和数据分析提供了技术支持。

关键词:Python新浪微博网络爬虫舆情分析中图分类号:TP393.092;TP391.1文献标识码:A文章编号:1672-3791(2022)06(b)-0034-04 Design and Lmplementation of Sina Weibo Crawler ProgramBased on PythonSUN Woyu(School of Information and Artificial Intelligence,Anhui Business College of Vocational Technology,Wuhu,AnhuiProvince,241000China)Abstract:In the Internet era,the emergence of various new media platforms makes information and data widely disseminated.In order to strengthen the management of Sina Weibo information and meet the needs of public opinion analysis,this paper focuses on the design of Sina Weibo crawler program in Python language.Based on the research on the basic concept and principle of web crawler,an application program with four functional modules of configuration,crawling,storage and analysis is designed.It provides technical support for media content manage‐ment and data analysis.Key Words:Python;Sina Weibo;Web crawler;Public opinion analysis随着互联网技术的快速革新,新媒体平台层见叠出,广大网民可以通过互联网平台发表观点和记录日常生活,各类消息事件也得到了广泛传播,为我们带来了信息爆炸的时代,拓宽了广大人民群众的视野,同时也带来了一系列舆情风险。

Python爬虫__微博某个话题的内容数据

Python爬虫__微博某个话题的内容数据

Python爬⾍__微博某个话题的内容数据1# -*- coding: utf-8 -*-2# @Time : 2020/8/18 15:393# @Author : Chunfang4# @Email : 3470959534@5# @File : Weibo_content.py6# @Software: PyCharm78from urllib.parse import urlencode9import requests10from pyquery import PyQuery as pq11import time12import os13import csv14import json1516 base_url = 'https:///api/container/getIndex?'1718 headers = {19'Host': '',20'Referer': 'https:///u/2830678474',21'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 22'X-Requested-With': 'XMLHttpRequest',23 }24class SaveCSV(object):2526def save(self, keyword_list,path, item):27"""28保存csv⽅法29 :param keyword_list: 保存⽂件的字段或者说是表头30 :param path: 保存⽂件路径和名字31 :param item: 要保存的字典对象32 :return:33"""34try:35# 第⼀次打开⽂件时,第⼀⾏写⼊表头36if not os.path.exists(path):37 with open(path, "w", newline='', encoding='utf-8-sig') as csvfile: # newline='' 去除空⽩⾏38 writer = csv.DictWriter(csvfile, fieldnames=keyword_list) # 写字典的⽅法39 writer.writeheader() # 写表头的⽅法4041# 接下来追加写⼊内容42 with open(path, "a", newline='', encoding='utf-8-sig') as csvfile: # newline='' ⼀定要写,否则写⼊数据有空⽩⾏43 writer = csv.DictWriter(csvfile, fieldnames=keyword_list)44 writer.writerow(item) # 按⾏写⼊数据45print("^_^ write success")4647except Exception as e:48print("write error==>", e)49# 记录错误数据50 with open("error.txt", "w") as f:51 f.write(json.dumps(item) + ",\n")52pass5354def get_page(page,title): #得到页⾯的请求,params是我们要根据⽹页填的,就是下图中的Query String⾥的参数55 params = {56'containerid': '100103type=1&q='+title,57'page': page,#page是就是当前处于第⼏页,是我们要实现翻页必须修改的内容。

基于Python的新浪微博爬虫研究

基于Python的新浪微博爬虫研究
Байду номын сангаас
文章分析了新浪API的一些认证 限制,新版的API需要被
方法,构建相应的URL来模拟这一滚动过程 。
搜索用户提供相应 的授权 ,因此采用传统爬虫的方 式。然后
4 关 键 词 的提 取
模 拟 登陆 、网页分 析、关键 词 提取等 三个方 面介 绍 了如何 爬 取
这个爬虫程序还有一个可以对爬取 到的微博内容进行分 新浪微博信息,研究用户登陆微博的过程 ,从 网页源代码中
仔 细观察可 以发现 ,每 条微 博都 以<div class=’WB
过 滤 掉之 后 ,可能会 有 多个 词出现 的次 数一 样多,但 这并
cardwrap …>作为起 始,而其 中的<a class=”W texta 不意味着这些词的关键性是一样 的。因此 ,还需要一个重要
w—fb”…>节点含有 昵称 ,<p class=”comment txt”>节点 性调整系数来衡量一个词是不是常见词。如果某个词比较少
出现 ,于是,进行 “词频”(TF)统计。但 是,出现次数最多的
【参考文献】
【1]郭晓云.基于Python和Selenium的新浪微博数据访 问【J].电脑编程技巧与维护,2012. [2]齐鹏,李隐峰,宋玉伟.基于Python的web数据采集技术 [J].电子科技 ,2012. [33]阮二 峰 TF_IDF与余 弦相 似 性 的应 用 【EB/OL】.(2013-03-15).http://www.ruanyifeng.com/blog/2013/03/tf-idf.html
第 6期 2015年 3月
无 线 互 联 科 技 ·计 算 机 世 界
N0.6 MarCh,2015

Python3:一个简单入门的微博网络爬虫

Python3:一个简单入门的微博网络爬虫

网络上有很多关于Python网络爬虫,但大都是Python2版本,而Python3的版本较少,如果有也会经常有不明就里的错误。

因此小编综合了多个来源程序,终于亲测成功,仅以此分享给需要的朋友。

前期准备本来是想用PC端Sina Weibo API来获取微博内容,但现在新浪微博规定限制太多。

一下是注意事项:该项规定出台,导致你只能爬自己的最新的5条记录,这有什么用,因此果断放弃。

改为爬取移动端的微博,因为移动端的微博可以分页爬取,这就可以一次爬取所有微博内容,这就方便很多。

打开移动端微博网址是:https://;浏览器使用的是:Chrome。

用自己账号登陆请用自己的账号登陆,登陆后,按F12,会出现以下内容找到--Headers--Cookie,把cookie复制到代码中的#your cookie处,待用。

获取你要爬取的用户ID方法是打开用户微博主页,里边有一个u/XXXXXX(一串数字);这串数字就是该用户的ID。

以范冰冰为例,uid=3952070245前期工作已经准备完成,后边开始撸代码了。

载入需要Python模块Python需要的模块如下,这部分不是重点,因此就不细讲,大家可以搜索一下如何下载相关模块。

简单的就是pip install模块名。

或者从官网上下载模块,本地安装。

输入用ID和设置Cookie本次爬取的是范冰冰原创微博(因此转发的不在此列),cookie请大家使用自己的地址。

另外pageNum是总共页数,范冰冰截止目前为56页。

urllist_set 储存爬取的url地址。

爬取具体微博内容和图片为了快速展示,本次仅爬取了前4页内容。

爬取内容保存将爬取的微博内容储存在到相关目录,本次储存在以uid的文件中。

需要注意的是因为Python3升级后,写入文件不支持‘str’,因此需要转换以下,用bytes 函数转换成字节。

微博内容结果如下同时也将爬取的相关图片的URL地址保存下来。

图片URL相关结果如下:将爬取的图片下载保存本地。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档