01 获取动态网页的数据
1 什么是动态网页?要通过方式去获取渲染后的数据呢?
动态网页是指在互联上访问一个http
页面时,页面的内容会由javascript
在浏览器中进行动态处理。这就是动态网页了。
想要从动态页面中找出特定的数据,要么分析网页是怎么生成的,逆向找出数据出来,要么借助selenium
这种浏览器驱动还操控
浏览器渲染完成后把数据读取出来。 前者要逆向分析,跟网站站长直接对决,优点是性能好。后者是,直接让浏览器渲染后直接读取,缺点
是性能差,速度慢。
2 使用nodejs
通过selenium
读取chrome
的动态网页数据
2.1 准备工作
- 要有
nodejs
环境和npm
或yarn
工具 - 查看
chrome
的版本号并到chrome
驱动中找到对应的版本号的驱动器,并下载下来
2.2 配置下载下来的chromedriver
的驱动器到环境变量中
selenium
是基于chromedriver
来操作chrome
,需要把它配置到PATH
环境变量中,这样selenium
才能发现它,从而操作chrome
2.3 node
代码示例
index.js
// 这是官方示例
const {Builder, By, Key, until} = require('selenium-webdriver');
(async function example() {
let driver = await new Builder().forBrowser('firefox').build();
try {
await driver.get('http://www.google.com/ncr');
await driver.findElement(By.name('q')).sendKeys('webdriver', Key.RETURN);
await driver.wait(until.titleIs('webdriver - Google Search'), 1000);
} finally {
await driver.quit();
}
})();
运行下
$ node index.js