热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用微信搜索抓取公众号文章

我喜欢看微信公众号里的技术文章,但是总是有一些鸡汤文阻碍我的实现,我是怎么让机器帮我自动摆脱鸡汤文的呢?接下来的几个章节讲述我的解决方案&

我喜欢看微信公众号里的技术文章,但是总是有一些鸡汤文阻碍我的实现,我是怎么让机器帮我自动摆脱鸡汤文的呢?接下来的几个章节讲述我的解决方案,让你感兴趣的文章扑面而来,无关的鸡汤文随风而去。本章节先将怎么利用搜狗微信搜索抓取公众号的文章

请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址

自动收集我关注的微信公众号文章

 

我的微信里关注了数十个有关大数据的公众号,每天都会出现那个小红点让我点进去看,但是点多了就会觉得烦了,所以我要做的第一步就是自动把公众号里的新文章都收集到一块,怎么做呢?scrapy!

对!scrapy抓取!但是scrapy顺着超链接抓取web网页容易,抓取微信app里的内容就有难度了,暂时还是做不到模拟一个收集app软件。庆幸的是,腾讯和搜狗搜索结婚啦!生出了一个小宝宝:搜狗微信搜索。下面我们就借助搜狗微信搜索来实现我的目的

举个例子,我关注了一个公众号叫:大数据文摘。打开http://weixin.sogou.com/,输入“大数据文摘”,点“搜公众号”,搜索结果如下:

点击这个搜索结果,跳到了新页面

这里面显示的都是最新发布的文章

好!我们就沿着这条路线来追踪公众号的新文章

下面我们来分析一下url

第一个搜索结果页的url是:http://weixin.sogou.com/weixin?type=1&query=%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%96%87%E6%91%98&ie=utf8&_sug_=n&_sug_type_=,我们去掉query以外的参数得到:http://weixin.sogou.com/weixin?query=%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%96%87%E6%91%98,打开之后结果是一样的,ok,这个就作为我们抓取的种子入口,如果搜索其他公众号就把query参数换掉

下面分析搜索结果里怎么提取第二章页面,也就是公众号profile页的链接,我们看下搜索结果页的部分html如下:

<div target&#61;"_blank" href&#61;"http://mp.weixin.qq.com/profile?src&#61;3×tamp&#61;1463443372&ver&#61;1&signature&#61;lNY-ZbjfPHr40G-zyUe*Sdc9HIn2IisEo0vwpKEAV*Z*ALBYuYf2HaMUtEP*15rQzs47zSEiORN3BOWPNA2R*A&#61;&#61;" class&#61;"wx-rb bg-blue wx-rb_v1 _item" uigs_exp_id&#61;"" onclick&#61;"gotourl(&#39;http://mp.weixin.qq.com/profile?src&#61;3×tamp&#61;1463443372&ver&#61;1&signature&#61;lNY-ZbjfPHr40G-zyUe*Sdc9HIn2IisEo0vwpKEAV*Z*ALBYuYf2HaMUtEP*15rQzs47zSEiORN3BOWPNA2R*A&#61;&#61;&#39;,event,this);return true;" id&#61;"sogou_vr_11002301_box_0" uigs&#61;"sogou_vr_11002301_box_0">
<div class&#61;"img-box">
<span class&#61;"ico-bg">span><span class&#61;"ico-r">span><img style&#61;"visibility: visible; height: 57px; margin-left: 0px;" src&#61;"http://img01.sogoucdn.com/app/a/100520090/oIWsFt58NVJTkYWvPtICKgg8ka60" onload&#61;"vrImgLoad(this, &#39;fit&#39;, 57, 57)" onerror&#61;"vrImgErr(this, &#39;/wechat/images/account/def56-56.png&#39;)" extra&#61;"err:&#39;http://img01.sogoucdn.com/net/a/04/link?appid&#61;100520078&url&#61;http://wx.qlogo.cn/mmhead/Q3auHgzwzM46WJlQ8GYRWPhThl25rSKJEYBm408fnEkYS9DUkiaSxGg/0/0&#39;">div>
<div class&#61;"txt-box">
<h3><em>大数据文摘em>h3>
<h4>
<span>微信号&#xff1a;<label name&#61;"em_weixinhao">BigDataDigestlabel>span>
h4>
<p class&#61;"s-p3">
<span class&#61;"sp-tit">功能介绍&#xff1a;span><span class&#61;"sp-txt">普及<em>数据em>思维,传播<em>数据em>文化span>
p>
<p class&#61;"s-p3">
<span class&#61;"sp-tit"><script>authnamewrite(&#39;2&#39;)script>微信认证&#xff1a;span><span class&#61;"sp-txt">深圳大数据文摘科技有限公司span>
p>
<p class&#61;"s-p3">
<span class&#61;"sp-tit">最近文章&#xff1a;span><span class&#61;"sp-txt"><a class&#61;"blue" target&#61;"_blank" id&#61;"sogou_vr_11002301_link_first_0" href&#61;"http://mp.weixin.qq.com/s?src&#61;3×tamp&#61;1463443372&ver&#61;1&signature&#61;fZ5HsUYiytbTgb8SekmcI3g9oizZncGBgdipWihPFh2pPnAwAwO62nX9iXNILZx0XtQB3R*3PWcgqPh1YWL*LX3qxIOf0ZpkKyhZSUkAgPmH*w71dqIB2*wfNTpVDZx5G3nh31tctf*lNqXlfXzgfPO6E60vqoqB694bPMymy*I&#61;" title&#61;"二项式与小苹果——看牛顿如何将灵感火花拓展成知识体系">二项式与小苹果——看牛顿如何将灵感火花拓展成知识体系a><span class&#61;"hui"><script>vrTimeHandle552write(&#39;1463440604&#39;)script>46分钟前span>span>
p>
……

看这里关键的href一行&#xff1a;

<div target&#61;"_blank" href&#61;"http://mp.weixin.qq.com/profile?src&#61;3×tamp&#61;1463443372&ver&#61;1&signature&#61;lNY-ZbjfPHr40G-zyUe*Sdc9HIn2IisEo0vwpKEAV*Z*ALBYuYf2HaMUtEP*15rQzs47zSEiORN3BOWPNA2R*A&#61;&#61;" class&#61;"wx-rb bg-blue wx-rb_v1 _item" uigs_exp_id&#61;"" onclick&#61;"gotourl(&#39;http://mp.weixin.qq.com/profile?src&#61;3×tamp&#61;1463443372&ver&#61;1&signature&#61;lNY-ZbjfPHr40G-zyUe*Sdc9HIn2IisEo0vwpKEAV*Z*ALBYuYf2HaMUtEP*15rQzs47zSEiORN3BOWPNA2R*A&#61;&#61;&#39;,event,this);return true;" id&#61;"sogou_vr_11002301_box_0" uigs&#61;"sogou_vr_11002301_box_0">

这就是我们要提取的profile页链接&#xff0c;提取方式可以直接通配成&#xff1a;“url里带http://mp.weixin.qq.com/profile?src&#61;的href属性”

 

ps&#xff1a;找xpath的方便方法是利用浏览器的开发者工具&#xff0c;比如chrome界面如下&#xff1a;

在Elements的标签处点右键选择&#xff1a;Copy->Copy XPath&#xff0c;就自动把xpath路径拷贝到剪切板了

 

注意&#xff1a;在这里我突然想到一个问题&#xff0c;每个公众号对应的profile页面是不是永远不变的呢&#xff1f;经过我的实验&#xff0c;这条url里的timestamp参数和signature是有对应关系的&#xff0c;任意一个错了都无法打开&#xff0c;而且每次搜索生成的链接都是不同的&#xff0c;所以我断定在微信搜索内容是动态生成链接的&#xff0c;那么这个动态链接的生命周期就不可预测了&#xff0c;所以为了保险起见&#xff0c;我们每次都从搜索入口追溯&#xff0c;才是万全之策

下面我们分析profile页里的文章链接&#xff0c;我们看profile页的部分 html如下&#xff1a;

<h4 class&#61;"weui_media_title" hrefs&#61;"/s?timestamp&#61;1463443165&src&#61;3&ver&#61;1&signature&#61;dZCo9et5C6nyZfVAQAl416OW-eXJbi0VaS0QPQdvEv1tawqgsjlVYUd0oav0tUHAf38HOGU3Lskd7qqXbFg9D2mP8cv36CZ1dW0bGxbP4YyJcRdy*M*Mow6xD5YWDK8-82r9MX*4WqgbGqo4FAhZeiGTEl27YhIbaIxPiQgMbxc&#61;">代理银行业务&#xff1a;通过监管列表对代理银行客户进行风险评级h4>
<p class&#61;"weui_media_desc">为了确保银行积极的通过代理银行关系来连接美国金融市场,需要考虑如何根据现有电汇和监管列表信息,来提升可疑行为模型的成熟度。p>
<p class&#61;"weui_media_extra_info">2016年5月17日p>

这里面可以找到文章的内容了链接、标题、摘要、发布时间&#xff0c;简直太完美了

链接的提取方式可以直接通配成&#xff1a;h4.weui_media_title hrefs

标题的提取方式可以直接通配成&#xff1a;h4.weui_media_title text

摘要的提取方式可以直接通配成&#xff1a;p.weui_media_desc

发布时间的提取方式可以直接通配成&#xff1a;p.weui_media_extra_info

 

开发我的scrapy爬虫

 

如果还没有安装scrapy&#xff0c;请见《教你成为全栈工程师(Full Stack Developer) 三十-十分钟掌握最强大的python爬虫》

创建一个scrapy工程

scrapy startproject weixin

在weixin/spiders/中创建dashujuwenzhai.py内容如下&#xff1a;

#!/usr/bin/python
# -*- coding: utf-8 -*-
import scrapyclass ShareditorSpider(scrapy.Spider):name &#61; "dashujuwenzhai"allowed_domains &#61; ["qq.com"]start_urls &#61; ["http://weixin.sogou.com/weixin?query&#61;大数据文摘"]def parse(self, response):print response.bodyhref &#61; response.selector.xpath(&#39;//div[&#64;id&#61;"sogou_vr_11002301_box_0"]/&#64;href&#39;).extract()[0]yield scrapy.Request(href, callback&#61;self.parse_profile)def parse_profile(self, response):print response.body

 

执行

scrapy crawl dashujuwenzhai

即可以抓到大数据文摘的profile页面内容

请尊重原创&#xff0c;转载请注明来源网站www.shareditor.com以及原始链接地址

接下来来研究profile页&#xff0c;抓回的页面不是普通的html页面&#xff0c;而是通过js渲染出来的&#xff0c;也就是我们看到的每一条文章的标题、摘要等都是通过js计算出来的&#xff0c;代码里有这么一句&#xff1a;

var msgList &#61; &#39;{"list":[{"comm_msg_info":{"id":410106318,"type":49,"datetime":1463528503,"fakeid":"2391437564","status":2,"content":""},"app_msg_ext_info":{"title":"机器人前传&#xff1a;达芬奇的机器狮和日耳曼装甲骑士","digest":"这是一篇描述阿尔法狗和Atlas机器人祖先的文章。远在500多年前的达芬奇时代&#xff0c;已经有了不少关于机器人的探索。这个大天才写了大量关于自动机描述&#xff0c;在他的个人笔记中也充斥着各种机械发明的构思&#xff0c;比如弹簧驱动的汽车和机器狮子。","content":"","fileid":504157567,"content_url":"\\/s?timestamp&#61;1463529354&src&#61;3&ver&#61;1&signature&#61;cG*R8qc-PGKV-aZ4q9IlJQfIHtGp5I3H63xlK-h5mBO0W2FRAzCddav9cPf*GuwUBI4x0zJzmtcoOU7sQQeMf3CfNzaTEIq4C8YwnsZQGnqnauqr2wQYvEFvAooyecPF3H6bg8OiqpSZsd5LnY*fVrZOMINmQwV8Qup*D9qvUkw&#61;","source_url":"https:\\/\\/mp.weixin.qq.com\\/s?__biz&#61;MzA4OTYwNzk0NA&#61;&#61;&mid&#61;401744027&idx&#61;1&sn&#61;43699667dca4438a49db51fb3700af4f&scene&#61;1&srcid&#61;0517MRoAk1EzgC5iSMtvoYC5&pass_ticket&#61;06ybKvJknob%2F5%2B%2FAmkUtnjcyCqWcuNxZTJapLW5QZyk7PWh1jD7ubwb5H1zXzMWB#rd","cover":"http:\\/\\/mmbiz.qpic.cn\\/mmbiz\\/wc7YNPm3YxXiajPXq2Y2PWQsic1SmjCxnTicHKtwItmARwkha1RI1gH1WwTfRvEUzauWJibjuJC9oJ8eibeVlDjRkwg\\/0?wx_fmt&#61;jpeg","subtype":0,"is_multi":1,"multi_app_msg_item_list":[{"title":"清华论坛实录|刘瑞宝:洞见数据内涵&#xff0c;提升公共安全研判能力","digest":"本文为刘瑞宝先生于2016年3月24日在RONG—大数据与公共安全专场上所做的题为《洞见数据内涵&#xff0c;提升公共安全研判能力》的演讲实录。","content":"","fileid":504157565,"content_url":"\\/s?timestamp&#61;1463529354&src&#61;3&ver&#61;1&signature&#61;cG*R8qc-PGKV-aZ4q9IlJQfIHtGp5I3H63xlK-h5mBO0W2FRAzCddav9cPf*GuwUBI4x0zJzmtcoOU7sQQeMf3CfNzaTEIq4C8YwnsZQGnrmdiX-aBZzJtqDGa76CoHH8gL7PEfN3ZQN5lNa4YgJUeUyE*SIna3B7W*zKWYskkU&#61;","source_url":"https:\\/\\/mp.weixin.qq.com\\/s?__biz&#61;MzAxMzA2MDYxMw&#61;&#61;&mid&#61;2651555964&idx&#61;2&sn&#61;479aaf7f3b687b973ffa303d3d3be6b9&scene&#61;1&srcid&#61;0517C5DgLArlrdVAlQ9GIHOl&pass_ticket&#61;06ybKvJknob%2F5%2B
……

当然还没有截取全&#xff0c;这就是文章的全部内容&#xff0c;写到了一个js变量里&#xff0c;这样就无法通过scrapy原生的response.xpath拿到&#xff0c;这怎么办呢&#xff1f;

我们来利用phantomjs来渲染&#xff0c;这是一个强大的工具&#xff0c;它是无界面的浏览器&#xff0c;所以渲染js速度非常快&#xff0c;但是也有一些缺陷&#xff0c;有一些浏览器渲染功能不支持&#xff0c;所以如果再深入可以借助selenium工具&#xff0c;这又是一个强大的工具&#xff0c;它原本是用来做web应用程序自动化测试用的&#xff0c;也就是可以模拟各种点击浏览等动作&#xff0c;那么用他来做爬虫几乎就是一个真人&#xff0c;本节先来研究phantomjs&#xff0c;有关selenium的内容后面有需求了再研究

 

安装phantomjs

wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd phantomjs-2.1.1-linux-x86_64/
./bin/phantomjs examples/netlog.js http://www.shareditor.com/

以上输出了网路通信日志&#xff0c;说明没有问题

 

为了方便&#xff0c;可以把./bin/phantomjs拷贝到~/bin下

 

写一个phantomjs渲染脚本

var page &#61; require(&#39;webpage&#39;).create();
var system &#61; require(&#39;system&#39;);
page.open(system.args[1], function(status) {var sc &#61; page.evaluate(function() {return document.body.innerHTML;});window.setTimeout(function() {console.log(sc);phantom.exit();}, 100);
});

创建phantomjs渲染脚本getBody.js内容如下&#xff1a;

 

执行

phantomjs getBody.js &#39;http://mp.weixin.qq.com/profile?src&#61;3×tamp&#61;1463529344&ver&#61;1&signature&#61;lNY-ZbjfPHr40G-zyUe*Sdc9HIn2IisEo0vwpKEAV*Z*ALBYuYf2HaMUtEP*15rQ7TpyhXFL52e8W929D4nd2g&#61;&#61;&#39; > profile.html

这里的链接可能已经失效&#xff0c;请换成在搜狗微信搜索搜到某个公众号profile页面里的某一篇文章的url

打开profile.html会发现内容已经被渲染完成了&#xff0c;每篇文章的地方变成了&#xff1a;

<div id&#61;"WXAPPMSG410106318" class&#61;"weui_media_box appmsg" msgid&#61;"410106318"><span class&#61;"weui_media_hd" style&#61;"background-image:url(http://mmbiz.qpic.cn/mmbiz/wc7YNPm3YxXiajPXq2Y2PWQsic1SmjCxnTicHKtwItmARwkha1RI1gH1WwTfRvEUzauWJibjuJC9oJ8eibeVlDjRkwg/0?wx_fmt&#61;jpeg)" data-s&#61;"640" data-t&#61;"1463528503000" hrefs&#61;"/s?timestamp

weui_media_bd"><h4 class&#61;"weui_media_title" hrefs&#61;"/s?timestamp&#61;1463531541&src&#61;3&ver&#61;1&signature&#61;n187YKNZjqgxyUtJ*yFEQGG7wJOH79RQeRrjQ0RGRdKEiZmR6iM0oNE5P0DPbQEwWTnShlZ4C3JIZr9PYThxbnhuCPl2UTc5NGE0ZkARKXEhTqCe7QvAGFf8vy2QWnPKqA9iSBBgBrocHKLBAuTM机器人前传&#xff1a;达芬奇的机器狮和日耳曼装甲骑士

weui_media_desc">这是一篇描述阿尔法狗和Atlas机器人祖先的文章。远在500多年前的达芬奇时代&#xff0c;已经有了不少关于机器人的探索。这个大天才写了大量关于自动机描述&#xff0c;在他的个人笔记中也充斥着各种机械发明的构思&#xff0c;比如弹簧驱动的汽车和机器狮子。p><p class&#61;"weui_media_extra_info">2016年5月18日p>div>div>

  ​

这便可以通过scrapy的request.xpath提取了

 

重新完善我们的scrapy爬虫脚本

 

#!/usr/bin/python
# -*- coding: utf-8 -*-
import scrapy
import subprocess
from scrapy.http import HtmlResponse
from scrapy.selector import Selectorclass ShareditorSpider(scrapy.Spider):name &#61; "dashujuwenzhai"allowed_domains &#61; ["qq.com"]start_urls &#61; ["http://weixin.sogou.com/weixin?query&#61;算法与数学之美"]def parse(self, response):href &#61; response.selector.xpath(&#39;//div[&#64;id&#61;"sogou_vr_11002301_box_0"]/&#64;href&#39;).extract()[0]cmd&#61;"~/bin/phantomjs ./getBody.js &#39;%s&#39;" % hrefstdout, stderr &#61; subprocess.Popen(cmd, shell&#61;True, stdout &#61; subprocess.PIPE, stderr &#61; subprocess.PIPE).communicate()response &#61; HtmlResponse(url&#61;href, body&#61;stdout)for selector in Selector(response&#61;response).xpath(&#39;//*[&#64;id&#61;"history"]/div/div/div/div&#39;):hrefs&#61; selector.xpath(&#39;h4/&#64;hrefs&#39;).extract()[0].strip()title &#61; selector.xpath(&#39;h4/text()&#39;).extract()[0].strip()abstract &#61; selector.xpath(&#39;//*[contains(&#64;class, "weui_media_desc")]/text()&#39;).extract()[0].strip()pubtime &#61; selector.xpath(&#39;//*[contains(&#64;class, "weui_media_extra_info")]/text()&#39;).extract()[0].strip()print hrefsprint titleprint abstractprint pubtimedef parse_profile(self, response):print response.body

这是一段我用了数天精力创造成功的一段代码&#xff0c;耗费了我很多体力值&#xff0c;所以重点讲解一下

href &#61; response.selector.xpath(&#39;//div[&#64;id&#61;"sogou_vr_11002301_box_0"]/&#64;href&#39;).extract()[0]

从公众号搜索结果页里提取profile页面的链接&#xff0c;这个id我怀疑不久后将失效&#xff0c;所以如果想做完美&#xff0c;还得不断完善&#xff0c;有关xpath的使用技巧可以参考http://ejohn.org/blog/xpath-css-selectors/

cmd&#61;"~/bin/phantomjs ./getBody.js &#39;%s&#39;" % href
stdout, stderr &#61; subprocess.Popen(cmd, shell&#61;True, stdout &#61; subprocess.PIPE, stderr &#61; subprocess.PIPE).communicate()

加载phantomjs脚本getBody.js来渲染profile页面&#xff0c;把里面的js渲染成html

response &#61; HtmlResponse(url&#61;href, body&#61;stdout)

用渲染后的html页面来创建一个HtmlResponse&#xff0c;用于 后面继续xpath提信息

Selector(response&#61;response).xpath(&#39;//*[&#64;id&#61;"history"]/div/div/div/div&#39;)

找到每一条文章模块所在的div

 

hrefs&#61; selector.xpath(&#39;//h4/&#64;hrefs&#39;).extract()[0].strip()title &#61; selector.xpath(&#39;h4/text()&#39;).extract()[0].strip()abstract &#61; selector.xpath(&#39;//*[contains(&#64;class, "weui_media_desc")]/text()&#39;).extract()[0].strip()pubtime &#61; selector.xpath(&#39;//*[contains(&#64;class, "weui_media_extra_info")]/text()&#39;).extract()[0].strip()

根据这个div结构提取各个字段

 

基于这个爬虫脚本&#xff0c;想造就怎样的神奇&#xff0c;就看你之后的想象力了&#xff0c;没有做不到&#xff0c;只有想不到&#xff01;


推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 生产环境下JVM调优参数的设置实例
     正文前先来一波福利推荐: 福利一:百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。福利二 ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Summarize function is doing alignment without timezone ?
    Hi.Imtryingtogetsummarizefrom00:00otfirstdayofthismonthametric, ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • 玩转直播系列之消息模块演进(3)
    一、背景即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的 ... [详细]
  • 校园表白墙微信小程序,校园小情书、告白墙、论坛,大学表白墙搭建教程
    小程序的名字必须和你微信注册的名称一模一样在后台注册好小程序。mp.wx-union.cn后台域名https。mp.wx-union.cn ... [详细]
  • OAuth2.0指南
    引言OAuth2.0是一种应用之间彼此访问数据的开源授权协议。比如,一个游戏应用可以访问Facebook的用户数据,或者一个基于地理的应用可以访问Foursquare的用户数据等。 ... [详细]
  • 最近学习了关于使用最为流行的jquery发送请求,在实践中以最为简单的聊天室作为测验的辅助工具,对相关网页开发有一个初步的认识,希望大家能够一起学习进步。首先介绍一下 ... [详细]
  • 小白的Python 学习笔记(八)推导式详解
    大家好,今天我总结一下Python的推导式,首先让我们来看定义推导式(comprehensions)是Python的一种独有特性,是可以从一个数据序列构建另一个新的数据序列的结构体 ... [详细]
author-avatar
焦作艾文斯
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有