php解析html文件PHP Simple HTML DOM Parser
微wx笑 2022-07-03【编程语言】 3 0关键字: php html
PHP版HTML解析工具PHP SIMPLE HTML DOM PARSER,采用PHP5+开发的一个简单的PHP HTML DOM分析,支持invalid HTML并提供非常简单的方式来操作HTML元素。在HMTL页面上查找标签所使用的语法与 jQuery(一个轻量级,实用的javascript框架)相似。从页面中抽取内容只需要一行代码。
这里介绍一个php解析HTML文件的工具:PHP Simple HTML DOM Parser
官方文档:https://simplehtmldom.sourceforge.io/docs/1.9/
代码下载:https://sourceforge.net/projects/simplehtmldom/
PHP Simple HTML DOM Parser 处理任何 HTML 文档,即使是那些被 HTML 规范视为无效的文档。
环境要求:
Requirement | Minimum | Recommended |
---|---|---|
PHP Version | 5.6.0 | Latest stable release |
PHP Extensions | iconv | iconv, mbstring |
PHP INI Settings | --- | allow_url_fopen = 1 ** |
** This makes it possible to load files from URL using file_get_html
** 这使得可以使用从 URL 加载文件
快速入门
下面的示例代码演示了 PHP Simple HTML DOM Parser 的基本功能。
从 HTML 文档中读取纯文本
echo file_get_html('https://www.google.com/')->plaintext;
将指定的 HTML文档加载到内存中,对其进行解析并返回纯文本。注意file_get_html
支持本地文件和远程文件!
从 HTML 字符串中读取纯文本
echo str_get_html('<ul><li>Hello, World!</li></ul>')->plaintext;
解析提供的 HTML字符串并返回纯文本。请注意,解析器处理部分文档以及完整文档。
从 HTML 文档中读取特定元素
$html = file_get_html(' foreach($html->find('img') as $element) echo $element->src . '<br>'; foreach($html->find('a') as $element) echo $element->href . '<br>';
将指定的文档加载到内存中并返回图像源列表以及锚链接。请注意,find
支持CSS选择器以在 DOM 中查找元素。
修改 HTML 文档
$doc = '<div id="hello">Hello, </div><div id="world">World!</div>'; $html = str_get_html($doc); $html->find('div', 1)->class = 'bar'; $html->find('div[id=hello]', 0)->innertext = 'foo'; echo $html; // <div id="hello">foo</div><div id="world" class="bar">World!</div>
在返回更新的 HTML 字符串之前解析提供的 HTML 字符串并替换 DOM 中的元素。在此示例中,第二个div
元素的类设置为,第一个元素bar
的内部文本设置为。div
foo
请注意,find
支持第二个参数从匹配数组中返回单个元素。
请注意,可以通过魔术方法直接访问属性(->class
在->innertext
上面的示例中)。
从 Slashdot 收集信息
$html = file_get_html('https://slashdot.org/'); $articles = $html->find('article[data-fhtype="story"]'); foreach($articles as $article) { $item['title'] = $article->find('.story-title', 0)->plaintext; $item['intro'] = $article->find('.p', 0)->plaintext; $item['details'] = $article->find('.details', 0)->plaintext; $items[] = $item; } print_r($items);
从Slashdot收集信息以进行进一步处理。
请注意,CSS 选择器和魔术方法的组合使解析 HTML 文档的过程成为一项易于理解的简单任务。
使用示例:
require('simple_html_dom.php'); function get_weixin_content($url){ $dom = file_get_html($url); if(!$dom){ return false; } $title = $dom->find("h2[id=activity-name]", 0)->outertext; $data['title'] = $title; $content = $dom->find("div[id=js_content]", 0)->outertext; $content = str_replace("data-src", "src", $content); $content = str_replace("style=\"visibility: hidden;\">", ">", $content); $data['content'] = saveimages($content); return $data; }
其中saveimages为远程图片本地化函数
使用以上代码可以实现微信公众号文章采集.
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/lang/2022-07-03/1288.html