javascript - 加载任何 url 内容并在 JS 中遵循 XPATH

标签 javascript node.js url web-scraping

我想做的是加载页面,并通过 XPath 或 Selector 或 JS Path 获取内容,然后将由此获取的值用于我的程序。我怎么能那样做? 例如,在此页面上,使用页面的 url 执行请求并遵循该路径(同时也以某种方式定位类型,这里是类):

//*[@id="question-header"]/h1/a

会给我“加载任何 url 内容并在 JS 中遵循 XPATH”

当我在里面获取文本时:

<a href="/questions/54847748/load-any-url-content-and-follow-xpath-in-js" class="question-hyperlink">Load any url content and follow XPATH in JS</a>

最佳答案

如果您需要以最可靠的方式从网页获取一些数据——即包括可以在客户端执行 JavaScript 生成的数据——您可以使用一些 headless 浏览器的管理器。例如,所描述的任务可以使用 Node.js 和 puppeteer 来完成在此脚本中(通过评估浏览器上下文中的代码片段并在 Node.js 和浏览器上下文之间交换数据,支持选择器和 XPath 以及所有 Web API):

'use strict';

const puppeteer = require('puppeteer');

(async function main() {
  try {
    const browser = await puppeteer.launch();
    const [page] = await browser.pages();

    await page.goto('https://stackoverflow.com/questions/54847748/load-any-url-content-and-follow-xpath-in-js');

    const data = await page.evaluate(() => {
      return document.querySelector('#question-header > h1 > a').innerText;
    });

    console.log(data);

    await browser.close();
  } catch (err) {
    console.error(err);
  }
})();

关于javascript - 加载任何 url 内容并在 JS 中遵循 XPATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54847748/

相关文章:

javascript - 获取最小化 Chrome 窗口的顶部和左侧 (x, y) 坐标 (JS)

javascript - 导出的变量未定义,而函数在 Node js 中导出

ajax - 有没有办法验证 ajax 请求是否是从给定域发出的?

java - Android 应用程序从 XML 打开 InputStream 时崩溃

javascript - jquery:如何更改整个 css 类的属性?

javascript - 倒比例

php - 添加http ://if submitted URL doesn't begin with it

url - 博客文章的 rss 提要分页网址是什么样的?

javascript - 无法制作动态增长的正则表达式

node.js - 从服务器端错误地处理多次点击