CNode

node 爬取今日 头条 数据 数据的排版有很多不一样的 怎么爬呢

问答
Tteenth发布于9 年前最后回复9 年前6 回复5649 浏览0 收藏

今日头条 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)

X
xiaozhongliu#1·9 年前
引用 teenth@XiaozhongLiu 如果抓取其它的新闻呢 如百度 搜狐 新浪呢

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

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

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

min_behot_time:0
category:__all__
utm_source:toutiao
widen:1
tadrequire:true
as:A1357AB3D57C7B7
cp:5A35CCD7BB674E1
_signature:.cXgZRARp.olwLh.AtDAJv3F4H
参与回复
登录后即可参与回复。登录