爬网工具
从技术营销人员的角度来看,抓取和自动化库非常重要。 这是Node JS中两个最广泛使用的Web抓取库的简介。
当我与开发人员交谈时,他们总是觉得我喜欢网页抓取很奇怪。 这主要是由于两个原因:
与API相比,抓取是一种不稳定且不可靠的解决方案,用于从数据源中提取数据。
*就代码而言,构建刮板意味着编写不一定符合某些最佳实践(例如可重用性)的代码。 该代码通常与特定用例紧密相关。
但问题是,当营销人员开始学习代码时,立即想到大量的用例。 营销人员梦dream以求的能够实现自动化的许多工作都无法通过官方API来完成。
摆脱一些从Web提取信息的手动工作非常诱人。 我认为对于营销人员来说,抓取和自动化是编码技能的最常见用例。
最近,我有机会与Puppeteer和Cheerio合作,并在两者之间进行切换,因此这是营销人员对何时使用它们的看法。
木偶戏
Puppeteer是Google开发的Node开源库。 基本上,这是一种通过Node启动浏览器并在Chrome上自动执行操作的方法。
Puppeteer的主要用例是自动化。
抓取数据并不总是那么简单。 以我的Product Hunt刮板Hunt为例。
在“产品搜寻”中,首次加载页面时,页面HTML中并不容易提供升级人信息。 在访问完整的提交者列表之前,您必须:
单击升级程序面板,一直滚动到列表末尾
为此,您需要一个可以在浏览器中自动执行操作的工具-这就是操纵up的目的。 需要登录获取数据或需要在浏览器中执行自动操作时,请使用Puppeteer。
切里奥
Cheerio是另一个NPM库,也称为“ JQuery for Node”。 它使您可以使用轻便,简单和快速的框架来抓取数据。 如果您熟悉,Cheerio可以处理输入到其中的原始HTML数据,类似于Python的Beautiful Soup。 这意味着,如果可以从URL中提取需要解析的数据,则在Cheerio中使用它非常简单。
以下是可用于从Twitter提取有关用户列表的信息的代码(通过twitter标记)。
const axios = require ( "axios" );
const cheerio = require ( "cheerio" );
//This function uses axios to get the html data on a given url it's also possible to do the same using the fetch method
const getHtml = async url => {
link = await axios.get(url);
return link.data;
};
//this is a node module that uses the above function and Cheerio to extract twitter data from a list of user tag (used in the backend of Hunt)
module .exports = async function run ( userList ) {
const enrichedUsers = [];
for (user of productHuntUserList) {
try {
const $ = cheerio.load( await getHtml( `https://twitter.com/ ${user.tag} ` ));
// here we extract the relevant information from each twitter page - followers number, description, and Twitter URL
let followers = $(
".ProfileNav-item.ProfileNav-item--followers > a > span.ProfileNav-value"
).text();
const description = $( ".ProfileHeaderCard-bio" ).text();
const url = `https://twitter.com/ ${user.tag} ` ;
// create a user object with existing info and the new info we've extracted from twitter
const enrichedUser = {
tag : user.tag,
name : user.name,
profile : user.profile,
twitterDescription : description,
twitterFollowers : followers,
pageUrl : url,
messagedAndFollowed : false
};
enrichedUsers.push(enrichedUser); // push the new user object into the enrichedUsers array
} catch (e) {
continue ; // this is not a good way to handle errors, but I didn't want to get into error handling here and it works for the sake of this tutorial.
}
}
return enrichedUsers;
};
切里奥VS木偶
这两个库有不同的用例,但通常似乎是JS抓取的两个主要选项。 如果必须选择,我可以辩称,如果不需要Puppeteer的自动化功能,则使用Cheerio会更高效,更好地实践。
在研究Hunt时,我构建了2个Scrapers –一个用于Product Hunt,另一个用于Twitter。 我最初都是使用Puppeteer构建的,当尝试从Twitter抓取大量用户(包括Heroku服务器上的内存错误)时,我注意到了很多性能问题– Puppeteer花了大约10分钟的时间才完成了对1000名支持者的抓取。 然后,我重写了Cheerio中的Twitter机器人(如上所述),发现性能提高了大约5倍以上:新代码花了大约2分钟(或更短的时间)完成抓取。
摘要
两种工具都允许您以营销人员通常归因于Python的方式将节点用于自动化和抓取。 这些工具是学习Javascript可能会遇到麻烦的另一个示例,但是最终可以为您提供更深入和全面的Web开发知识。
作为营销人员,您可能会想到多种使用这两种方法的方法,建议您这样做。 如果您正在学习新知识,那么不妨创建一些有用的东西!
翻译自: https://hackernoon.com/automation-vs-scraping-cheerio-and-puppeteer-for-marketers-qjg330mg
爬网工具