编程语言您现在的位置是:首页 > 博客日志 > 编程语言

php解析html文件PHP Simple HTML DOM Parser

<a href='mailto:'>微wx笑</a>的头像微wx笑 2022-07-03编程语言 1 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 ParserosC无知

官方文档:https://simplehtmldom.sourceforge.io/docs/1.9/osC无知

代码下载:https://sourceforge.net/projects/simplehtmldom/ osC无知

PHP Simple HTML DOM Parser 处理任何 HTML 文档,即使是那些被 HTML 规范视为无效的文档。osC无知

环境要求:

RequirementMinimumRecommended
PHP Version5.6.0Latest stable release
PHP Extensionsiconviconv,
mbstring
PHP INI Settings---allow_url_fopen = 1 **

** This makes it possible to load files from URL using file_get_htmlosC无知

** 这使得可以使用从 URL 加载文件osC无知

快速入门

osC无知

下面的示例代码演示了 PHP Simple HTML DOM Parser 的基本功能。osC无知

从 HTML 文档中读取纯文本

echo file_get_html('https://www.google.com/')->plaintext;

将指定的 HTML文档加载到内存中,对其进行解析并返回纯文本。注意file_get_html支持本地文件和远程文件!osC无知

从 HTML 字符串中读取纯文本

echo str_get_html('<ul><li>Hello, World!</li></ul>')->plaintext;

解析提供的 HTML字符串并返回纯文本。请注意,解析器处理部分文档以及完整文档。osC无知

从 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 中查找元素。osC无知

修改 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的内部文本设置为divfooosC无知

请注意,find支持第二个参数从匹配数组中返回单个元素。osC无知

请注意,可以通过魔术方法直接访问属性(->class->innertext上面的示例中)。osC无知

从 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收集信息以进行进一步处理。osC无知

请注意,CSS 选择器和魔术方法的组合使解析 HTML 文档的过程成为一项易于理解的简单任务。osC无知



osC无知

使用示例:

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为远程图片本地化函数osC无知

使用以上代码可以实现微信公众号文章采集.osC无知


osC无知

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.com/blog/lang/2022-07-03/1288.html

很赞哦! () 有话说 ()