querylist采集微信公众号文章(puppeteer实战:爬取搜狗微信搜索的公众号文章并写入Excel )

优采云 发布时间: 2021-09-11 08:12

  querylist采集微信公众号文章(puppeteer实战:爬取搜狗微信搜索的公众号文章并写入Excel

)

  在上一本书中提到,使用puppeteer库进行截图操作只是简单的展示了puppeteer的特性和基本用法。这次我们来谈谈使用puppeteer抓取页面数据并写入Excel。

  Puppeteer实战:抓取搜狗微信搜索到的公众号文章,写入Excel

  背景一:搜狗搜索现在有了根据关键词查询微信公众号文章的功能,而我们要做的就是爬下指定关键词的文章,因为这个需求来自我 来自公司业务部,所以为了方便同学们操作查看,还需要把爬取的数据放到Excel中。

  用过之后,感觉这个东西并不复杂,只要懂API就行。我认为复杂的是需要考虑各种基本情况。

  首先一般网站已经进行了防爬处理。我们需要以合理的方式绕过它。比如搜狗搜索就是。一开始,我打算读取a标签的href属性,然后直接在浏览器中打开链接。但是在尝试之后,我发现我能够做到这一点。估计搜狗做了一些反爬行动。这样做将报告 IP 异常。所以我放弃了,使用puppeteer的page.click方法来解决这个问题,因为puppeteer本质上是通过模拟真实用户的点击操作来实现的,所以不会受到反爬机制的影响。

  另外一个是因为爬虫是微信文章,我们还需要考虑微信文章本身的一些情况,比如文章被发布者删除或移动,文章被举报,或者这个文章时分享另一篇文章文章Wait...

  总之,我觉得用puppeteer写的爬虫脚本跟业务是强耦合的,所以我个人觉得代码本身没有参考意义。不过还是可以看看自己在写过程中遇到的各种奇怪的问题,或许可以为大家解决遇到的问题提供一些思路。

  完整代码如下:

  exportExcel 导出 Excel:

  const fs = require("fs");

const xlsx = require("node-xlsx");

module.exports = {

async exportExcel(fileName, data) {

let dataArr = [];

let title = ["文章标题", "文章URL", "作者名(公众号)", "发布日期", "内容"];

dataArr.push(title);

data.forEach(curr => {

dataArr.push([

curr.title,

curr.url,

curr.account,

curr.publishTime,

curr.content

]);

});

const options = {

"!cols": [

{ wch: 70 },

{ wch: 100 },

{ wch: 30 },

{ wch: 30 },

{ wch: 200 }

]

};

// 写xlsx

var buffer = await xlsx.build(

[

{

name: "sheet1",

data: dataArr

}

],

options

);

await fs.writeFile(`./dist/data1【${fileName}】.xlsx`, buffer, function(

err

) {

if (err) throw err;

console.log("写入成功!");

});

}

};

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线