成果

代码,github地址 : https://github.com/zzwwjjdj319/wechat_crawler
展示地址

使用模块

  • async -- 异步流程控制 基本使用
  • request -- 抓取网站模块 官网
  • cheerio -- 处理html模块 官网

思路

爬取的思路 : 从搜索开始 -> 进入公众号文章列表页面 -> 再分别访问每篇文章 ->同时ajax获取点赞量,阅读量等信息. 因为公众号文章列表和文章内容页的url都是临时链接,大概是2个小时过期,所以每次都需要从搜索开始爬取.

代码说明一

app.js是主文件,npm install 后 node app 就可以启动爬虫任务,测试是支付宝公众号,爬取了最近5篇文章;
var ut = require('./common.js');
var async = require('async');
console.log('开始测试!!!')
var public_num = '支付宝';
//任务数组
var task = [];
//根据public_num搜索公众号,最好是微信号或者微信全名.
task.push(function (callback) {ut.search_wechat(public_num, callback)
});
//根据url获取公众号获取最后10条图文列表
task.push(function (url, callback) {ut.look_wechat_by_url(url, callback)
})
//根据图文url获取详细信息,发布日期,作者,公众号,阅读量,点赞量等
task.push(function (article_titles, article_urls, article_pub_times, callback) {ut.get_info_by_url(article_titles, article_urls, article_pub_times, callback)
})
//执行任务
async.waterfall(task, function (err, result) {if (err) return console.log(err);console.log(result);
})

代码说明二

从app.js能看出调用了3个方法,分别是search_wechat, look_wechat_by_url, get_info_by_url
common.js就是实现了这3个方法,和需要调用的其他方法.

爬虫第一步

首先就是根据提供的微信号.搜索公众号,获取公众号列表 --  common.js里的 search_wechat 方法
得到公众号的临时URL

爬虫第二步

访问临时的公众号URL -- common.js里的look_wechat_by_url 方法,得到最近10条图文消息列表,注意
这里搜狗微信做了反爬虫机制,经常出现验证码,代码中需要破解验证码,nodejs识别验证码暂时没找到好用的模块,
我使用的是第三方接口实现的.授权码已屏蔽.
所有文章数据在JS代码中,通过正则获取. match(/var msgList = ({.+}}]});?/) ,分析数据结构,
重组成自己需要的数据结构.

爬虫第三步

根据图文url获取详细信息,发布日期,作者,公众号,阅读量,点赞量等 -- common.js里的 get_info_by_url方法
其中,阅读量和点赞量是ajax获取的,微信文章的永久链接,看代码,就不写明了.

nodejs爬虫抓取搜狗微信文章详解相关推荐

  1. 如何用python爬取公众号文章搜狗微信搜索_python抓取搜狗微信公众号文章

    初学python,抓取搜狗微信公众号文章存入mysql mysql表: 代码: import requests import json import re import pymysql # 创建连接 ...

  2. python抓取微信_python抓取搜狗微信公众号文章

    初学python,抓取搜狗微信公众号文章存入mysql mysql表: 代码: import requests import json import re import pymysql # 创建连接 ...

  3. python抓取搜狗微信公众号文章

    初学python,抓取搜狗微信公众号文章存入mysql mysql表: 代码: import requests import json import re import pymysql# 创建连接 c ...

  4. python wechatsougou_python抓取搜狗微信公众号文章

    初学python,抓取搜狗微信公众号文章存入mysql mysql表: 代码: import requests import json import re import pymysql # 创建连接 ...

  5. centos7+TP5.1+selenium+chrome抓取搜狗微信推文

    centos7+TP5.1+selenium+chrome抓取搜狗微信推文 一.Composer 引入 "require": {"php-webdriver/webdri ...

  6. 爬取搜狗微信文章笔记1

    爬取搜狗微信文章笔记1 错误1 ```pythonprint('https://weixin.sogou.com'+index) TypeError: can only concatenate str ...

  7. php抓取网页内容实例,php中抓取网页内容的实例详解

    php中抓取网页内容的实例详解 方法一: 使用file_get_contents方法实现 $url = "http://news.sina.com.cn/c/nd/2016-10-23/do ...

  8. 抓取网站数据入库详解,附图文

    抓取网站数据入库详解,附图文 一. 分析需求 1.1 需求分析 刚好有这样一个需求,去抓取下方网站的页面全部数据,并存入MySQL数据库. 这个页面为: 爬取页面 年月日选择 出生于几点,性别: 男或 ...

  9. java 抓取搜狗微信_搜狗微信公众号文章抓取

    机器能做的事就别让人来做! 目标: 抓取特定微信公众号文章 思路:利用selenium模拟浏览器行为,进行抓取(理由:搜狗已将文章链接进行处理,且页面为动态生成) 框架: 步骤: 1.登录搜狗 a.找 ...

  10. python爬虫——使用xpath爬取搜狗微信文章

    缺点:爬取一定数量之后会出现验证码,导致不能继续爬取,需要更换ip才可以继续爬取,或者在浏览器重新输入验证码之后复制cookie后方能继续爬取. import requests from fake_u ...

最新文章

  1. vs2015编译 pybind 动态库
  2. Linux基础维护——笔记
  3. 对象属性的调用_面向对象的三主线之一:Java类及类的成员(1)
  4. D - Delete Prime Gym - 102875D
  5. 一文读懂:常见低通、高通、带通三种滤波器的工作原理
  6. java读c二进制文件_如何使用JAVA读取C / Matlab创建的二进制文件
  7. 分别用邻接矩阵和邻接表实现图的深度优先遍历和广度优先遍历_数据结构与算法:三十张图弄懂「图的两种遍历方式」...
  8. springBoot过滤器去除请求参数前后空格
  9. 24.磁盘配额(Quota)
  10. 飞机大战项目(源代码(直接用),有效果图,素材包)
  11. 正定矩阵与半正定矩阵定义与判别
  12. 冒泡排序Java代码实现
  13. hadoop 编程规范(hadoop专利分析)
  14. 使用逐步细化开发 DFD
  15. springboot jedis配置以及集群(第三篇) ubuntu16实现redis集群
  16. sk hynix 固态硬盘 管理_256G固态硬盘哪个品牌的好?不妨看看这个
  17. oracle报错ora-00054,ora-00054资源正忙的解决办法-Oracle
  18. 编译Linux驱动程序
  19. android多个按钮美化,Android开发学习系列(一)——Android按钮圆角美化
  20. 微信小程序|使用小程序制作一个节日祝福生成器

热门文章

  1. 【pytorch】轻量级网络ShuffleNet_V2原理及完整实现,对照结构图手动编写
  2. java开发中的dorado_dorado7开发常用技巧及代码
  3. 周遭心理学的应用-什么是心理学?
  4. 代码比较工具三款功能强大Beyond compare、DiffMerge、WinMerge
  5. 经典卷积网络--ResNet残差网络
  6. camtasia2018-2019-2020下载安装激活码教程,永久免费版
  7. NC生成单据PK主键
  8. 海森矩阵介绍及其在机器学习、深度学习中的理解
  9. js 跨域获取cookie
  10. Kotlin 密封类