Tag: xpath

使用nodejssearch非结构化的html

我需要爬行/报废一个静态的非结构化的HTML,我试图得到一个nodejs代码的内容,我尝试使用cheerio和xpath失败。 http://static.puertos.es/pred_simplificada/Predolas/Tablas/Cnt/PAS.html 第一个得到的元素的Xpath是/ html / body / center / center / table / tbody / tr [3],然后我需要在TR中获取每个TD文本。 如果尝试获取tbody节点 var parser = new parse5.Parser(); var document = parser.parse(response.toString()); var xhtml = xmlser.serializeToString(document); var doc = new dom().parseFromString(xhtml); var select = xpath.useNamespaces({"x": "http://www.w3.org/1999/xhtml"}); var nodes = select("//x:tbody", doc); 我总是收到一个[]节点。 随着cheerio我尝试迭代TR元素,但正如我上面提到的失败。 var $ = cheerio.load(response); $('tr').each(function(i, e) { […]

如何select最佳自动化与selenium工具组合

这可能是基于意见的问题,但我真的很困惑select自动化工具组合。 到目前为止,我一直在使用Selenium webdriver,maven和Java来构build自动化框架。 这似乎完全正常工作。 现在有一天我觉得很多自动化工程师WebdriverJS使用WebdriverJS , WebdriverIO , WebdriverIO等等。 有人告诉我,如果使用WebdriverJS / WebdriverIO / WebdriverJS构build自动化框架,那么执行速度将比Java快。 我知道我应该根据自己的需求来select工具,但是同时我觉得我们不能在某些网站中使用WebdriverJS / WebdriverIO / WebdriverIO在这种网站中所有的元素都必须被xpath为dynamic改变class / id大多数元素。 所以,如果任何人都可以给我提示哪些工具select哪种网站,那么这将是非常有帮助的。 即对于AngularJS网站Node.Js对于selenium自动化Node.Js是很好的。

使用xpath.js NPM模块parsingXML

我的XML看起来像这样: <jobs> <job> <title>Engineer – System Planning</title> <url>http://my.jobs/0629cdc680d04cf3bcd711a1c0b69836321</url> <company>Iberdrola USA</company> <location>Augusta, ME</location> <dateacquired>2013-3-22 6:24 PM</dateacquired> <jvid>0629cdc680d04cf3bcd711a1c0b69836321</jvid> </job> <job> <title>Engineer – Hydro</title> <url>http://my.jobs/61cccbfba50c4f93a5169aafc13c82b2321</url> <company>Iberdrola USA</company> <location>Rochester, NY</location> <dateacquired>2013-7-5 8:33 PM</dateacquired> <jvid>61cccbfba50c4f93a5169aafc13c82b2321</jvid> </job> </jobs> 我想要使​​用XPath.js NPM模块( https://www.npmjs.org/package/xpath.js )。 但我只是不确定如何循环使用该模块的XML文档中的每个job

为什么XPathselect上下文节点之外的节点?

我正在使用带有Node.js的XPath,并且我有下面的HTML文档,我想在其中select所有文章节点,然后在第二步中使用类"abc"所有div: <html lang="en"> <head> <meta charset="UTF-8"> <title>Test</title> </head> <body> <article> <div>123456</div> <div class="abc">Hello0!</div> </article> <article> <div>123456</div> <div class="abc">Hello1!</div> </article> <article> <div>123456</div> <div class="abc">Hello2!</div> </article> <article> <div>123456</div> <div class="abc">Hello3!</div> </article> <article> <div>123456</div> <div class="abc">Hello4!</div> </article> <article> <div>123456</div> <div class="abc">Hello5!</div> </article> <article> <div>123456</div> <div class="abc">Hello6!</div> </article> <article> <div>123456</div> <div class="abc">Hello7!</div> </article> <article> <div>123456</div> <div class="abc">Hello8!</div> </article> <article> […]

为什么我的NodeJS脚本在fs.readFile和fs.appendFile处理大量文件时陷入了僵局。

我有一个需要打开大约120k HTML页面的文件夹(每个文件大约70kb),使用xPathparsing一些数据并将该数据附加到.csv文件。 以下是我的代码: 它应该从parseFolder读取文件列表,遍历每个文件名,用fs.readFile打开它,然后使用jsdom和xpathparsing数据,并使用fs.appendFile将其保存到csv文件中。 前100个文件似乎做得好,但之后会逐渐减慢,消耗内存和CPU,最终停摆。 我有16个内存的演出,当我的内存使用量达到7Gig时,似乎达到了一些限制。 我是新来的JS和节点,任何帮助指出我失踪将非常感激。 var fs = require('fs'); var jsdom = require('jsdom').jsdom; var xpath = require('xpath'); var S = require('string'); var os = require('os'); ParserRules = { saveFile: 'output.csv', parseFolder: '/a/folder/with/120k/HTML/files', fields: { "field1": "//div[@class='field1']/text()", } }; start(); function start() { console.log('Starting…'); fs.readdir(ParserRules.parseFolder, iterateFiles); } function iterateFiles(err, filesToParse) { for (var i […]

NightWatch – 无法在具有值的input上find具有xpath定位器的元素

随着守夜,我有问题,我的网页上find一个元素,XPATH是好的,因为我已经find它与FirePath。 我的页码: <label class="switch " data-ng-repeat="item in values"> <input class="ng-pristine ng-untouched ng-invalid ng-invalid-required" name="obtentionPermisConduiteAccompagneeSwitcher" value="N" ng- model="$parent.model" ng-required="!$parent.model" required="required" type="radio"/> …… 我的select器: input_conduiteAccompagnee: { selector: './/input[@name="obtentionPermisConduiteAccompagneeSwitcher" and @value="N"]', locateStrategy: 'xpath' }, 我的命令: //conduite accompagnee onglet_conducteur.waitForElementVisible('@input_conduiteAccompagnee', 10000); onglet_conducteur.click('@input_conduiteAccompagnee'); browser.pause(3000); 但是我有这个信息: ×等待元素在10000毫秒内可见时超时。 – 预计“可见”,但得到:“不可见” 你有没有同样的问题?

libxmljs的替代软件

目标:使用Node.js访问网页,使用xpath语法操作DOM,并打印新的DOM。 libxmljs没问题,但它有几个NPM不能解决的依赖关系。 你使用哪个库来xpath任意的HTML?

使用Node.js和XPath对页面进行性能分析

我进入了一些网站与Node.js刮。 我想使用XPath,因为我可以用几种GUI自动生成它。 问题是,我无法find有效的方法。 jsdom非常慢。 它在一分钟左右parsing500KiB文件,全部CPU负载和大量内存占用。 用于HTMLparsing的stream行库(例如cheerio )既不支持XPath,也不公开W3C兼容的DOM。 有效的HTMLparsing显然是在WebKit中实现的,所以使用phantom或casper将是一种select,但是这些parsing需要以特殊的方式运行,而不仅仅是node <script> 。 我不能依靠这种变化所暗示的风险。 例如,要find如何用phantom运行node-inspector困难多了。 Spooky是一个选项,但是它有足够的bug ,所以它在我的机器上根本没有运行。 然后用XPathparsingHTML页面的正确方法是什么?