2016-09-23 64 views
1

我想制作一个脚本,它将解析当前页面的html,过滤掉某些div类,然后将其内容写入文件或除去页面上的所有内容。解析当前页面的html

我想最好的办法是在该页面上运行Tampermonkey脚本。我看着http://userscripts-mirror.org/,但没有找到这样的脚本。

有没有可以在Chrome上运行的javascript html解析器?

可能会这样工作的东西也许?

var divClasses = parseCurrentPage("div class x"); 
// then do something on divClasses and then show only them 
+2

问父HTML元素 $('selector-to-grap-div\'s-parent-html').append(myDiv); 上追加div元素场外资源是明确的主题。 –

+0

“解析当前页面的html”是什么意思?你应该可以使用'.querySelectorAll()'或'.getElementsByClassName()' – guest271314

+0

尝试拉整个页面的源代码,并使用正则表达式可能吗? – Brydenr

回答

1

jquery可以做所有这些和更多。我会建议它读了https://learn.jquery.com/

一旦你的jQuery包括一个简单的抓取所有的“格”元素选择会是这样的: var divClasses = $('div'); 如果你想只抢到一定的div元素,你可以很容易地做到这一点使用选择器,或者通过添加类,id和/或父级/层次级别限制到选择器 - 在这里阅读更多https://api.jquery.com/category/selectors/

然后,当你做了你想做的div元素之后,你可以再次使用jquery使用jquery的“追加”功能显示他们。

简单调用'append'功能与你想,如果你需要抓住的div元素之一的父母,那么你可以使用jQuery的'parent'功能

+0

不错,你还可以使用jquery处理'var divClasses'的内容吗?像'removeif(“div有一个特定的词”)' – shinzou

+0

最肯定!如果你指的是在div文本中使用某个单词,那么你可以简单地使用jquery的'text'函数 - api.jquery.com/text,然后使用javascript str.indexOf来查看你正在寻找的单词是包含在div的文本中。如果是,那么你可以使用jquery的删除它删除api.jquery.com/remove var myDivsText = myDiv.text(); if(myDivsText.indexOf(“wordLookingFor”)> = 0){myDiv.remove(); } – splay

+0

当我尝试在chrome的控制台中运行'var divClasses = $('div');'它会返回'undefined'或抛出'尝试获取ID为“%s”的元素,但它不存在于我确实试图用几种方式将它包括在内:http://stackoverflow.com/questions/7474354/include-jquery-in-the-javascript-console也许我会打开另一个问题... – shinzou

0

我相信你可以很容易与jQuery ...刚刚获得的<body>的内容和使用jQuery做你的查询。

+0

你可以删除所有的div,但在jQuery中的某些特定的? – shinzou

+0

@kuhaku你可以使用$(“div”)来获取所有它们......然后用forEach去检查并删除一些 –

1

过滤掉特定的div类

您可以使用document.getElementsByClassName()

var elements = document.getElementsByClassName(names); // or: 
var elements = rootElement.getElementsByClassName(names); 
  • 元素是发现元素的现场HTMLCollection
  • 名称是表示要匹配的类名列表的字符串;类名由空格分隔
  • getElementsByClassName可以在任何元素上调用,而不仅仅在文档上。它被调用的元素将被用作搜索的根 。