sina微博发状态实现原理

王的静 2012-09-26 10:07:50
公司要弄一个类似 sina微博发状态的 可实时可更新 请高手指点给点思路
...全文
274 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋天的企鹅 2012-10-09
  • 打赏
  • 举报
回复
什么是发状态...
lifei0007 2012-10-09
  • 打赏
  • 举报
回复
就是留言板
纸牌屋弗兰克 2012-10-07
  • 打赏
  • 举报
回复
不能这么说,留言板相对功能简单多了,微博系统还是很复杂的,不是这么容易就做出来的

[Quote=引用 1 楼 的回复:]

微博是什么?高级留言板罢了。
网上留言板程序一抓一大把。
[/Quote]
bojimiyabojimiya 2012-10-05
  • 打赏
  • 举报
回复
发状态是什么意思呢,‘正在编辑’这种?还是当前用户的状态?
两端都做ajax吧,一边轮询写状态,一边轮询读状态
兼哲 2012-10-05
  • 打赏
  • 举报
回复
应该说的是,微博上的 IM 聊天状态吧。

关注这个帖子,我知道怎么做,不过不知道你指的究竟是什么
acabin 2012-09-26
  • 打赏
  • 举报
回复
微博是什么?高级留言板罢了。
网上留言板程序一抓一大把。
Cola是一个分布式的爬虫框架,用户只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。pip install pyyaml安装下载或者用git clone源码,假设在目录/to/pth/cola,将该路径添加到Python path中。一种简单的方法是在site-packages中添加pth文件。site-packages因系统而异,如果是windows,假设python 装在C:\python27,那么就是C:\python27\Lib\site-packages;如果是linux,那么应该是/usr/local /lib/pythonX.X/dist-packages。在site-packages下新建一个cola.pth文件,里面写上路径:/to/path/cola。Cola目前自带了若干个爬虫,在项目根目录下的contrib中。下面就wiki为例,分别说明如何在单机和分布式环境下运行。依赖无论是维基百科还是新浪微博的实现,数据都存放在MongoDB中,所以要确保MongoDB的安装。在wiki下的wiki.yaml和weibo下的weibo.yaml中可以配置MongoDB的主机和端口。维基百科和新浪微博实现依赖于下面的几个包:mechanizepython-dateutilBeautifulSoup4mongoenginersa(仅新浪微博需要)可以使用pip或者easy_install来安装。单机模式单机模式非常简单,只需运行contrib/wiki/__init__.py即可。cd /to/path/cola/contrib/wiki python __init__.py要运行新浪微博的爬虫,需要在weibo.yaml中配置登录的用户名和密码。这里要注意,要保证这个用户名和密码在登录时不需要验证码。停止则需运行stop.py,注意不能通过直接杀死进程来停止,否则会导致cola非法关闭。 如果非法关闭,确保cola不在运行的情况下,则可以运行stop.py来恢复。但无论如何,都不推荐非法关闭,否则可能遇到不可预知的错误。python stop.py分布式模式首先需要启动cola master和cola workers。分别运行根目录下bin中的start_master.py和start_worker.py启动cola master:cd /to/path/cola python bin/start_master.py --data /my/path/data如果不指定--data,那么数据文件会放置在项目根目录下的data文件夹中。启动cola worker:python bin/start_worker.py --master  --data /my/path/data--data选项同master。如果不指定master,会询问是否连接到本机master,输入yes连接。最后使用bin下的coca.py来运行指定的Cola job:python bin/coca.py -m  -runLocalJob /to/path/cola/contrib/wiki-runLocalJob选项是要运行的job所在文件夹的绝对路径。输入命令后,该job会被提交到Cola集群来运行。停止Cola Job或集群停止整个集群,则可以运行:python bin/coca.py -m  -stopAll而停止一个Job,则需要查询得到Job的名称:python bin/coca.py -m  -showRunningJobsNames得到名称后,再运行:python bin/coca.py -m  -stopRunningJobByName 基于Cola实现的爬虫基于Cola实现的爬虫位于contrib/目录下。目前实现了四个爬虫:wiki:维基百科。weibo:新浪微博爬虫。从初始用户出,然后是其关注和粉丝,依次类推,抓取指定个数的新浪微博用户的微博、个人信息、关注和粉丝。其中,用户微博只获取了内容、赞的个数、转和评论的个数等等,而没有具体去获取此微博被转和评论的内容。generic(unstable):通用爬虫,只需配置,而无需修改代码。目前Cola实现了一个抽取器(cola/core /extractor),能够从网页正文中自动抽取主要内容,即去除类似边栏和底脚等内容。但是,此抽取器目前准确度还不够,效率也不够高,所以需要谨慎 使用。weibosearch(unstable):新浪微博搜索的爬虫。这个爬虫使用 cola.core.opener.SpynnerOpener,基于spynner实现了一个Opener能够执行JavaScript和Ajax代 码。目前这个爬虫存在的问题是:新浪微博可能会将其识别成机器人,因此有可能会让输入验证码。wiki和weibo之前有所提及。主要说明generic和weibosearch。对于generic来说,主要要修改的就是配置文件:job:   patterns:     - regex: http://blog.sina.com.cn/$       name: home       store: no       extract: no     - regex: http://blog.sina.com.cn/s/blog_.       name: article       store: yes       extract: yes其中,regex表示要匹配的url的正则表达式;name是正则匹配的名称;store为yes时是存储这个网页,no为不存储;extract表示是否自动抽取网页正文,只有当store为yes的时候,extract才有作用。对于weibosearch,其使用了spynner来执行JavaScript和Ajax代码。所以需要确保以下依赖的安装:PyQt4(>=4.4.3)spynner如果你觉得可以基于cola实现一个比较通用的第三方爬虫,比如说腾讯微博等等,欢迎将此爬虫提交到contrib/中。编写自定义Cola Job见wiki编写自定义Cola Job。架构和原理在Cola集群里,当一个任务被提交的时候,Cola Master和Worker会分别启动JobMaster和JobWorker。对于一个Cola Job,当JobWorker启动完成后,会通知JobMaster,JobMaster等待所有JobWorker启动完成后开始运行Job。在一个 Cola Job启动时,会启动一个消息队列(Message Queue,主要操作是put和get,worker抓取到的对象会被put到队列中,而要抓取新的对象时,只要从队列中取即可),每个 JobWorker上都存在消息队列节点,同时会有一个去重模块(bloom filter实现)。Cola还不够稳定,目前会处于持续改进的状态。且Cola还没有在较大规模的集群上测试,但是接下来我会把Cola应用到新项目中,并逐步完善。也希望大家也能给我反馈,并帮助改进。Roadmap0.1版本正式推出前不会再增加新的功能了,主要目标让Cola更加稳定,并且提高cola/core/extractor的性能和精确度,完善contrib/generic和contrib/weibosearch。0.2版本计划:实现一个web接口,可以查看运行的cola job以及运行情况简化安装,支持easy_install或者pip安装。增加解决依赖库安装的机制。0.3版本计划:增加一个统一持久化抽象,支持保存到关系型数据库,MongoDB,文件系统,HDFS等等。0.4版本计划:支持Python 3 标签:Cola
开篇先讲两个小故事故事一:在北京一家创业公司工作的年轻女白领是一个旅行爱好者,喜欢旅行并分享到微博上。趁着五一假期到泰国旅游,她拍摄了一组照片分享到了微博上,24h后,微博阅读量达到1万,她收到了100元的广告费。年轻女白领收到广告费后非常的开心,因为她做着自己喜欢的事,还因此而获得了额外收益,从此决定创作出更多精美内容送到微博上,与人分享自己的快乐。故事二:201X年,微博用户掀起“打拐”行动(打击拐卖儿童行动),一条“6岁女孩周XX四川彭州被拐”的微博在网上被疯狂转,引来无数网友关心。不久之后,杭州一位女士,现该条微博上使用的照片正是自己女儿的照片,而自己的女儿一直在家中,并未被拐。于是立马报警,网警查看了微博的操作记录(全部存在区块链上),快速追溯到了虚假微博的始作俑者,并将其绳之于法。上述故事情节,在去中心化微博平台中都是可以实现的,借助于区块链技术,可以保证微博上的所有数据和行为可溯源,从而保证传播信息的真实性。同时,由于去除掉了中心化主体,微博的参与者将同时成为微博平台的所有者,可以共享微博平台的收益。一、现有的中心化微博平台——新浪微博传统微博(如新浪微博)就是一个中心化的应用平台,新浪公司就是整个微博平台的中心。新浪公司制定新浪微博的运行规则,开出整个微博平台,为其提供中央服务器,维持着整个新浪微博的运转,并不断地向外推广,吸引用户使用。一切商业行为都是为了追逐利益的,新浪公司运营新浪微博,也是为了吸引广告主投放广告,从而获得巨额的广告收入。在中心化的微博平台中,大致流程是这样的,博主(微博者)会编辑微博送到新浪微博平台中,新浪微博微博推送给观众(看微博者),观众查看微博微博中会夹杂着一些广告,观众看微博时也会看到一些广告。广告主会为广告的浏览量和点击量,支付广告费给新浪公司。二、去中心化微博平台与传统微博平台不同,在去中心化微博平台中,将没有中心机构,没有中央服务器,主要是通过区块链技术,运用分布式自治组织(DAO)的组织架构,实现微博平台的自治。让每一个微博参与者都成为微博平台的所有者,他们将共享微博平台获得的全部收益。在去中心化微博平台中,参与者主要有:微博者,他们是微博内容提供者,是最核心的参与者之一。微博平台受不受欢迎,很大程度上依赖于内容的质量,而这就必然取决于微博者。微博者可以根据其微博中所包含广告的浏览量(等同于微博浏览量)和点击量,来获得微币(WB)作为奖励。挖矿者(存储节点),提供算力和存储能力,充当着服务器的角色,是微博平台得以正常运行的基础。微博系统每隔10分钟会将最新微博打包送到各个存储节点中,存储节点会储存最新的微博数据,保证所有数据可溯源(区块链技术特点)。作为奖励,系统会给提供算力和存储能力的挖矿者以微币(WB)作为奖励。看微博者,他们是微博内容的浏览者,是微博平台中的主要用户,根据其对微博以及广告的浏览量和点击量,系统也会给予其微币(WB)作为奖励;广告主,在微博中投放广告,以提高自己品牌知名度或者直接引流的商家,他们可以在微博中投放广告,并根据广告的浏览量和点击量,用微币(WB)来支付广告费。在四个参与者中,微博者、挖矿者和看微博者在参与过程中,都会获取到微币(WB)作为奖励,而广告主则主要需要消耗微币(WB)才能参与到微博活动中。因此,会形成一个微币(WB)交易市场。在交易市场中,广告主用现实中的通用货币(如RMB)购买其他参与者手中的微币(WB)。此外,博主(微博者)通过微博下方所包含的广告是可以获得收益的,但广告也会给粉丝(看微博者)带来阅读成本,甚至造成反感,从而取消关注,所以博主会主动去把握好广告与粉丝之间的均衡。因此,在去中心化微博平台中,会将微博中广告数量和内容的选择权让渡给博主,从而降低粉丝阅读广告的心理成本,并提高广告的点击量。如一个摄影博主,了一个在极地拍摄美景的微博微博下方的广告则选择了与博主同款单反相机的广告,因为关注他微博的人都是以摄影爱好者为主,因此对这样的广告不会过度反感,甚至还会主动去了解。(注:笔者经常在某浪微博上刷到贷款、祛痘、整形等垃圾广告,表示十分反感,无法忍受!)去中心化微博平台参与者所构成的业务流程图详情如下: 

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧