首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

用 Javascript 和 Node.js 爬取网页

正则表达式:艰难的路 在没有任何依赖性的情况下,最简单的进行网络抓取的方法是,使用 HTTP 客户端查询网页时,在收到的 HTML 字符串上使用一堆正则表达式。...第二个元素(在索引1中)将找到我们想要的 标记的 textContent 或 innerHTML。但是结果中包含一些不需要的文本( “Username: “),必须将其删除。...要从每个标题中提取文本,必须在 Cheerio 的帮助下获取 DOM元素( el 指代当前元素)。然后在每个元素上调用 text() 能够为你提供文本。... 代码中用 JSDOM 创建一个 DOM,然后你可以用和操纵浏览器 DOM 相同的方法和属性来操纵该 DOM。...这就具备了一些以前没有的可能性: 你可以获取屏幕截图或生成页面 PDF。 可以抓取单页应用并生成预渲染的内容。 自动执行许多不同的用户交互,例如键盘输入、表单提交、导航等。

10K10

node爬虫入门

我们可以知道列表元素被一个id为post_list元素包裹着,单个列表元素内容是由class为post_item的div元素包裹。...js动态插入的数据读取 前面我们使用request库请求回来了html文档,然后使用cheerio对文档进行解析,整个过程没有去像浏览器那样解析渲染html文档、运行js。...因为这块是js在浏览器运行时动态添加到网页中的内容,因此,我们请求首页时返回的数据并没有这里的数据。...但是这个库中的api没有使用then-able方案,使用的是callback方案,以及js动态写入的内容无法获取到。...解析js动态写入的内容 :_fetchDynamicContent /** * @desc 抓取js动态渲染的页面的内容 * @param {Array} urls 需要抓取的 url 集合

5.3K20

基于 Electron 的爬虫框架 Nightmare

check,uncheck,selectscrollTo 向网页注入脚本: .js .css的文件类型原理是跟油猴差不多,可以编写自己的js代码注入十分方便 wait 函数可以按照延迟时间或者一个 dom 元素的出现...id']}/hot` const topicOriginalInfo = await nightmare .goto(url) .wait('.zu-main-sidebar') // 等待该元素的出现....evaluate(function () { // 获取这块数据 return document.querySelector('.zu-main-sidebar').innerHTML...wait(waitElement) .evaluate(function () { return document.querySelector('.zh-profile-card').innerHTML...是一个 jQuery 的 selector 库,可以应用于 HTML 片段并且获得对应的DOM 元素,然后我们就可以进行对应的 DOM 操作->增删改查都可以,这边主要用来查询 DOM 和获取数据。

3.1K60

nodejs cheerio模块提取html页面内容

nodejs cheerio模块提取html页面内容 1. nodejs cheerio模块提取html页面内容 1.1. 找到目标元素 1.2. 美化文本输出 1.3. 提取答案文本 1.4....cheerio模块是一个类似jquery的模块,具有相似的API、功能,能够将一个网页解析为DOM,以及通过selector选择元素,设置、获取元素属性。...A 注:其中答案保存在网页中,但在网页中没有显示出来。 1.1 找到目标元素 提取问题文本的整体思路:先找到包含题目的所有元素,然后再获取这些元素的内容即可。...要实现这个方法,要获取一个元素的所有的子结果,使用cheerio的contents函数,这个函数获取一个元素的所有子元素(包括文本元素)。然后调用字符串的trim函数去除首尾的空白文本。...这个代码基本上是解决一次性问题,没有什么重用性(在编写的过程中也没有考虑这些)。但是最重要的是:它解决了问题,它能够工作。它不需要那么好!

3.2K60

JS快速入门(二)

父节点拥有子节点,同级的子节点被称为同胞(兄弟或姐妹) 常用节点获取方法和属性 要进行 DOM 操作,首先要获取到需要操作的节点或节点集合,接下来以下面的示例代码为基础,介绍常用的 DOM 获取方法和属性...可以使用索引获取节点集合中的某个元素节点(后续的节点集合也可使用这种方法) document.getElementsByTagName('p')[0] getElementsByClassName(...(间接查找) 方法 说明 innerHTML 返回元素内包含的所有 HTML 内容(文本和标签),类型为字符串 innerText 和innerHTML类似,但是只返回文本 children 返回指定元素的子元素节点集合...,下面介绍如何交互,主要用到修改、删除、添加 DOM修改 方法 说明 innerHTML innerHTML 除了获取元素内容,也可通过赋值用于修改元素中内容。...属性返回一个元素属性集合(这里可以简单理解为类名的集合),通过使 用 classList 中的方法可以方便的访问和控制元素类名,达到控制样式的目的 classList 常用方法: 方法 说明

6.5K30

从网页中提取结构化数据:Puppeteer和Cheerio的高级技巧

Puppeteer是一个基于Node.js的无头浏览器库,它可以模拟浏览器的行为,如打开网页、点击元素、填写表单等。...Cheerio是一个基于jQuery的HTML解析库,它可以方便地从HTML文档中提取数据,如选择器、属性、文本等。...例如:page.goto(url):打开一个网页page.waitForSelector(selector):等待一个元素出现page.click(selector):点击一个元素page.evaluate...a-last a'); // 如果有下一页的按钮,就点击它,并继续循环 if (nextButton) { await nextButton.click(); } else { // 如果没有下一页的按钮...性能优化的方法有很多,例如:减少无用的请求:有些网页会加载很多不相关的资源,如图片、视频、广告等,这些资源对于数据抓取来说是没有用的,而且会增加网络流量和内存占用。

47810

JavaScript-Dom

JavaScript-Dom 简介 DOM:Document Object Model 节点 HTML 文档中的所有内容都是节点 整个文档是一个文档节点 每个 HTML 元素元素节点 HTML 元素内的文本是文本节点...document.URL ​ document常用方法 名称 说 明 getElementById() 返回对拥有指定id的第一个对象的引用 getElementsByName() 返回带有指定名称的对象的集合...getElementsByTagName() 返回带有指定标签名的对象的集合 write() 向文档写文本、HTML表达式或JavaScript代码 节点的属性 属性名称 描述 parentNode...返回节点的父节点 childNodes 返回子节点集合,childNodes[i] firstChild 返回节点的第一个子节点,最普遍的用法是访问该元素的文本节点 lastChild 返回节点的最后一个子节点...||obj.lastChild.firstChild.innerHTML;    alert(str); element属性 属性名称 描述 firstElementChild 返回节点的第一个子节点

42610

DOM操作

特别说明: innerHTML是符合W3C标准的属性,而innerText只适用于IE浏览器,因此,尽可能地去使用innerHTML,而少用innerText。...children:非标准属性,它返回指定元素的子元素HTMLCollection集合,该集合只包含HTML节点,不包含文本节点。...childNodes:标准属性,它返回指定元素的子元素NodeList节点集合,包含HTML节点、所有属性、文本节点。...document.getElementById():返回匹配指定ID属性元素节点对应的对象,如果没有发现匹配的节点,则返回null。...返回值是一个HTMLCollection对象,也就是说,搜索结果是一个动态集合,任何元素的变化都会实时反映在返回的集合中。这个方法不仅可以在document对象上调用,也可以在任何元素节点上调用。

1.8K60
领券