node 爬取今日 头条 数据 数据的排版有很多不一样的 怎么爬呢
发布于 7 年前 作者 teenth 4710 次浏览 来自 问答

今日头条 pc端网页的 推荐 热点 科技 等等 栏目 每条数据展示的排版 有些情况下 有区别 该怎么处理 还有 其它新闻类网站呢 这些该怎么爬 我用的 是phantom 爬的 loadPage(‘https://www.toutiao.com/’); async function loadPage(url) { const newsArray = []; driver.get(url); let result = await driver.getPageSource() let channelArr = channelList(result); // 暂时用推荐做实验 getNewsList(driver,channelArr[0]); } function channelList(pageSource) { const $ = cheerio.load(pageSource); eles.each(function (index, element) { let item = $(element).text(); let path = $(element).find(‘a’).attr(‘href’); channelArr.push({channel: item, href: path}) }); return channelArr; } 我现在这种处理 太简单了 感觉没啥用 好多都爬不到

6 回复
  1. 考虑一下直接抓接口,而不是等他js把各种业务加进去再解?
  2. 考虑下https://github.com/GoogleChrome/puppeteer
  3. 性能方面,也是抓接口好于抓页面,headless开销还是太大了

拉取新闻是异步请求的接口, query string参数如下. 其它参数固定, 后面三个是前端计算得来, 为了不掉头发, 直接上headless吧.

min_behot_time:0
category:__all__
utm_source:toutiao
widen:1
tadrequire:true
as:A1357AB3D57C7B7
cp:5A35CCD7BB674E1
_signature:.cXgZRARp.olwLh.AtDAJv3F4H

@soda-wy 🙏 我在研究下

@XiaozhongLiu 如果抓取其它的新闻呢 如百度 搜狐 新浪呢

@teenth 你还想我给你分别分析一下? 我的头发还不够掉呢, 兄弟. 多自己动动手.

@XiaozhongLi 谢谢 我当时没看明白

回到顶部