node 爬虫 根据目录自动存写入文档
2022/2/2 17:12:29
本文主要是介绍node 爬虫 根据目录自动存写入文档,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本案例以小说网站为案例
需要 用到的模块有 fs,patn 用来操作文件,使用selenium-web来操作浏览器
其中 selenium-webdriver 模块是需要自己安装一下的。
npm i selenium-webdriver
通过指定的浏览器打开
var driver = new Builder().forBrowser('firefox').build();
在用浏览器进入指定地址,并获取所有章节的标签
进入章节详情获取数据
把获取的数据存入指定文档,并循环其它章节
下面是全部操作代码
const fs = require('fs') const path = require('path') let file = path.resolve(__dirname, './file.txt'); //存入文件位置 const { Builder, By, Key, until } = require('selenium-webdriver'); var currentPageNum = 1; //第一章节 var maxPageNum = 2059; //最大章节数 var driver = new Builder().forBrowser('firefox').build(); var list = [] start() async function start() { await driver.get('https://www.xbiquge.la/34/34525/'); //小说 目录首页 let listLength = await driver.findElements(By.css('.box_con dl dd')); //获取小说所有章节的标签 maxPageNum = listLength.length; //更新最大章节数 inWeb(); //进入小说章节页面 }; async function inWeb() { console.log(`当前正在获取第${currentPageNum}页数据,共${maxPageNum}页`) if (currentPageNum < maxPageNum + 1) { console.log("------------开始点击 进入文章-------------") let pageItem = await driver.findElements(By.css('.box_con dl dd')); let item = await pageItem[currentPageNum - 1].findElement(By.css("a")) //根据章节数进入小说页面 let href = await item.getAttribute("href") await driver.get(href); //小说 内容页面 通过a标签的href地址进入 // item.click();//点击事件来进入页面 setTimeout(() => { getData(); //获取小说数据 }, 200); //增加延迟时间给页面加载,如果没有加载完成无法获取元素 } } async function getData() { while (true) { let notError = true; try { //更具css样式获取对应内容 let title = await driver.findElement(By.css('.bookname h1')); let text = await driver.findElement(By.id("content")); title = await title.getText(); //标题 text = await text.getText(); //内容 currentPageNum++; //获取内容后增加章节数 let str = "\n" + title + "\n" + text // 异步写入数据到文件 fs.appendFile(file, str, { //把获得的章节名称和内容写入文档 encoding: 'utf8' }, err => {}) if (currentPageNum < maxPageNum + 1) { //如果章节数没有达到最大章节数就继续爬取数据 start() } } catch (error) { if (e) notError = false console.log("error ------------", error.message); } finally { if (notError) break; } } }
这篇关于node 爬虫 根据目录自动存写入文档的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28微服务架构中API版本控制的实践
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南