一般来说,平台上爬取内容的方案有两种:
一种是通过web,即借助基于puppeteer的爬虫方案
另一种是通过app,即借助基于uiautomator2的UI自动化方案
本次介绍web爬取的方案,这里需要简单学习下puppeteer框架(相关资料https://github.com/GoogleChrome/puppeteer)
下面介绍具体操作流程:
(1)如何用代码定位网页上的一个元素?
Chrome的开发者工具可以很好地帮助我们完成这个工作,以百度应用商店为例:
单击一下,会发现在开发者工具的Elements这个tab中有一个元素被高亮了,这就是待定位的元素的HTML代码,右键点击该元素,按照下图选择Copy selector,即可得到该元素在页面中的代码定位
至此,拥有了开发者工具帮我们确定的元素的selector,我们就可以对其进行一系列操作了,比如输入、点击等操作
(2)环境的初始化流程
我们需要创建一个浏览器示例,同时还需要让浏览器生成一个新页面,这样才能进行我们之后的操作,大致代码如下:
const browser = await puppeteer.launch({
args: ["--proxy-server='direct://'", '--proxy-bypass-list=*']
});
const page = await browser.newPage();
有了这个page变量,我们才方便进行接下来的操作
(3)如何正确地进行输入?
从第(1)步中我们可以获得一个元素的selector,但是如果想要在一个元素中输入内容的话,首先需要保证它是一个,其次需要通过如下代码selector转换成元素后再进行输入(上图中Copy下来的selector是#searchText)
const searchInputSel = '#searchText';
let inputEle = await page.$(searchInputSel);
await inputEle.type('第五人格');
(4)如何正确进行点击?
这里不仅包含如何执行点击操作,还包含如何监控点击后的页面变化。
首先是执行点击