scrapestack:用于抓取网站的API

并非每个站点都具有从其中访问数据的API。 实际上,大多数不是。 如果需要提取数据,一种方法是“擦除”数据。 也就是说,将页面加载到Web浏览器中(您可以自动执行),在DOM中找到所需内容,然后进行处理。

如果您要处理成本,维护和技术债务,可以自己做。 例如,这是“无头”浏览器的大用例之一,例如Puppeteer如何启动和控制无头Chrome。

或者,您可以使用像scrapestack这样的工具,它是一种现成的API,不仅可以为您提供抓取功能,而且还可以比您自己做的更好,更快,并且具有更多选择。

说我的目标是从Meetup.com页面中获取最新的完成的聚会。 Meetup.com有一个API,但是价格昂贵,并且需要OAuth和其他东西。 我们需要的只是这里过去一次聚会的名称和链接,所以让我们将其从页面上移出即可。

我们可以看到DOM中需要的内容:

为了发挥作用,让我们使用带有jQuery的scrapestack API客户端进行抓取:

$.get('https://api.scrapestack.com/scrape',
  {
    access_key: 'MY_API_KEY',
    url: 'https://www.meetup.com/BendJS/'
  },
  function(websiteContent) {
     // we have the entire sites HTML here! 
  }
);

在该回调中,我现在还可以使用jQuery遍历DOM,获取所需片段,并在我们的网站上构建所需的内容:

// Get what we want
let event = $(websiteContent)
  .find(".groupHome-eventsList-pastEvents .eventCard")
  .first();
let eventTitle = event
  .find(".eventCard--link")[0].innerText;
let eventLink = 
  `https://www.meetup.com/` + 
  event.find(".eventCard--link").attr("href");

// Use it on page
$("#event").append(`${eventTitle}
`);

在实际使用中,如果我们像这样在客户端进行操作,我们将利用一些基本的存储,这样我们就不必在每次页面加载时都访问API,例如将结果粘贴在localStorage并在几次加载后失效天之类的。

有用!

实际上,我们更有可能在服务器端进行抓取。 一方面,这是保护API密钥的方法,这是您的责任,并且如果直接在客户端使用API​​,那么在面向公众的网站上实际上是不可能的。

我本人可能会做一个云函数来做到这一点,所以我可以留在JavaScript(Node.js)中,并有机会将数据存储在某个地方。

我想说一下,查看文档 ,看看下一次您是否需要进行抓取时,这是否不是正确的答案。 无论如何,您都会在免费计划中收到10,000个请求以尝试试用,而在具有更多功能的任何付费计划中,它都会增加一吨。

直接连结→

翻译自: https://css-tricks.com/scrapestack-an-api-for-scraping-sites/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值