分享好友 最新动态首页 最新动态分类 切换频道
利用微信搜索抓取公众号文章(转载)
2024-12-26 15:08

来源:http://www.shareditor.com/blogshow/44



 

2016.7.14 更新

搜狐微信增加对referer验证

 

 


 

 

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

 
 

看这里关键的href一行

 
 

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

 

ps:找xpath的方便方法是利用浏览器的开发者工具,比如chrome界面如下

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

 

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

下面我们分析profile页里的文章链接,我们看profile页的部分 html如下

 
 

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

链接的提取方式可以直接通配成:h4.weui_media_title hrefs

标题的提取方式可以直接通配成:h4.weui_media_title text

摘要的提取方式可以直接通配成:p.weui_media_desc

发布时间的提取方式可以直接通配成:p.weui_media_extra_info

 

 

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

创建一个scrapy工程

在weixin/spiders/中创建dashujuwenzhai.py内容如下

执行

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

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

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

 
 

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

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

 

以上输出了网路通信日志,说明没有问题

 

为了方便,可以把https://blog.csdn.net/weixin_30521161/article/details/bin/phantomjs拷贝到~/bin下

 

创建phantomjs渲染脚本getBody.js内容如下

 

执行

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

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

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

 

 

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

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

加载phantomjs脚本getBody.js来渲染profile页面,把里面的js渲染成html

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

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

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

 

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

 


 

 

Python处理HTML转义字符

用Python可以这样处理

 

如果还想转回去,可以这样

 


 

python对json的相关操作

使用简单的json.dumps方法对简单数据类型进行编码,例如

输出

[[1, 2, 3], 123, 123.123, 'abc', {'key2': (4, 5, 6), 'key1': (1, 2, 3)}] 

[[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}]

 

从json到python的类型转化对照如下

输出

<type 'list'> 
[1, 2, 3]

[[1, 2, 3], 123, 123.123, u'abc', {u'key2': [4, 5, 6], u'key1': [1, 2, 3]}]

 

参考

 

http://www.cnblogs.com/coser/archive/2011/12/14/2287739.html

最新文章
AIGC绘画设计基础——SD人物写实图像高质量生成和手部修复
看到一些的图片,就是手部出现一系列的问题;有教程在使用复杂的方法来修复手,但在我看来,如果你遵循下面分享的方法,你生成的人物图像不会出现严重的手部问题,就算要修复也是较为省事的;下
365安全卫士下载安装手机
365安全卫士是一款功能强大的手机助手安全软件,大家可以在这里很轻松的使用这款软件来操作管理自己的手机,功能十分的强大操作也很简单,感兴趣的小伙伴们可以下载试试!365杀毒卫士,全方位查杀手机病毒,检测管理应用缓存,一键提升运行
AI如何赋能工业设计?
随着人工智能技术的不断发展和应用,越来越多的行业开始将其运用到自己的领域中。工业设计作为一个涉及到产品设计、制造和销售等多个环节的综合性学科,也不例外。AI在工业设计中的应用,可以帮助企业提高效率、降低成本、提升产品质量等方
219万元起售!全球最贵iPhone 16 Pro Max亮相;英伟达:断供中国市场为不实传闻;ChatGPT经历全球范围宕机丨大公司动态
【大消费】 219万元起售!配有18K纯金皇冠,全球最贵iPhone 16 Pro Max亮相 迪拜奢华品公司Caviar再次定制推出全球最贵iPhone 16 Pro Max,装饰18K纯金制成的皇冠,并镶嵌着珍贵的宝石,起售价为301070美元(约218.9万元人民币)。该定制款
27个很精致的句子,简短洋气,让人一见倾心!
一、没有任何事、任何人,需要你过了12点还苦想不睡,任何东西都不能以健康做交换,记住,你只能活一辈子。二、年纪大了,经不起凶,只想被宠,任何一种让我感觉心累的关系,都不会主动再去维持了。三、这个世界上没有人“应该”为你做什么
12306火车票购票方式汇总(附官网入口)
  12306火车票购票方式汇总(附官网入口)  点击进入:中国铁路12306网站  一、售票窗口购票  1. 在售票窗口购买实名制车票时,可以使用哪些身份证件?  通过车站售票窗口、铁路车票销售代理人的售票处购票或列车上购票、补票时,
ai写作无审核免费的软件有哪些
百度AI写作是基于百度强大的搜索引擎和技术,为用户提供一站式的AI写作服务。该软件支持多种文体和题材的写作,如小说、散文、诗歌等,且生成内容质量较高,无需人工审核,非常适合需要快速生成文本的用户。小鸡快写是一款简单易用的AI写作
2人演的最搞笑小品剧本范文,精选3篇
【】小品:艺术表演形式小品:字画装裱形式小品:动漫《小品一家人》的角色小品:园林景观中的构成之一小品:文体名小品:佛经的节略本以下是为大家整理的2人演的最搞笑小品剧本范文(精选3篇),欢迎品鉴!  演员表  王博:-王丽:-  黎
相关文章
推荐文章
发表评论
0评