如何使用jQuery和XPath抓取网页

How can one scrape a web page with jQuery and XPath?

本文关键字:抓取 网页 XPath 何使用 jQuery      更新时间:2023-09-26

我可以通过Firebug在网页的标题中粘贴一个jQuery javascript链接。然后,我可以运行一个脚本来抓取它和它链接到的页面。

我如何开始用jQuery或javascript编写这个脚本?在jQuery/Javascript中是否有一个接口,我可以使用XPath访问页面上的元素(以及它链接到的页面上)?

首先,您需要在浏览器之外使用JavaScript运行时。最常见的是Node.js。接下来你需要一种方法来创建DOM客户端。这通常使用jsdom来完成。

所以,你的脚本应该:

  1. 下载html页面(jsdom为您完成此操作,但您可以使用请求)
  2. 创建客户端DOM
  3. 使用jQuery解析

下面是一个Node.js脚本示例:

var jsdom = require("jsdom");
jsdom.env("http://nodejs.org/dist/", [
    'http://code.jquery.com/jquery-1.5.min.js'
  ], function(errors, window) {
  console.log("there have been", window.$("a").length, "nodejs releases!");
});

你会运行它,就像这样:

$ node scrape.js

别忘了先安装jsdom

$ npm install --production jsdom

您可以使用快速获取页面的HTML

var html = document.documentElement.innerHTML;

这将只返回一个字符串文字,而不会捕获根元素。

您可能对pjscrape感兴趣,这是一个专门为此目的构建的web抓取库(免责声明:这是我的项目)。它基于PhantomJS,这是一个可以从命令行运行的无头Webkit实现,它有一个非常简单的语法,可以从多个页面中抓取数据,并找到额外的URL来抓取和抓取。