刮& lt; script>使用简单的HTML Dom解析器标记某些关键字
Scraping <script> tag with certain keyword using Simple HTML Dom Parser
我试图使用简单的HTML Dom从一组网页中抓取<script>
标签。一开始,我通过提供我需要的标签的数字顺序来拼凑它:
$script = $html->find('script', 17); //The tag I need is typically the 18th <script> tag on the page
我已经意识到顺序根据页面的不同而不同(这不是一种可扩展的方式,因为它可以随时改变)。我如何在标签中搜索我需要的关键字,然后拉回完整的标签?例如,我需要的标签总是包含字符串"PRODUCT_METADATA"。
提前感谢任何想法!
我最终使用下面的代码来搜索我的关键字的所有脚本标签:
$scripts = $html->find('script');
foreach($scripts as $s) {
if(strpos($s->innertext, 'PRODUCT_METADATA') !== false) {
$script = $s;
}
}
它工作,但对我来说,我试图找到一个csrf令牌隐藏在一个脚本标签,起初不能让它工作,所有得到的是NULL
。
我的解决方案是use explode()
的脚本s和非常重要的记住->innertext
否则你不能得到string
。
我很幸运,令牌是在双引号中,所以很容易得到它。
最后的代码是这样的:
$scripts = $html->find('script');
foreach($scripts as $s) {
if (strpos($s->innertext, 'csrf_token') !== false) {
$script_array = explode('"', $s->innertext);
$token = $script_array[1];
break;
}
}
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 使用“;这个“;JavaScript原型方法中的关键字
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在DOM元素上按类型构建此函数
- delete关键字在全局变量上的不同行为
- Windows形成web浏览器控件和Javascript更改的DOM
- Datatables:通过DOM数据源中的名称引用列
- 在DOM中查找一个模式并替换它's的内容使用jquery
- DOM事件通过JSON转换为java
- 将DOM节点值与字符串Javascript进行比较
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 流星中DOM的繁殖
- JavaScript 中的嵌套函数和 “this” 关键字
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- PHP-如何重定向到同一页面并更改DOM's
- 如何使用ViewCompiler手动编译DOM的一部分
- 刮& lt; script>使用简单的HTML Dom解析器标记某些关键字