抓取微博热词,使用simple_html_dom来操作html数据
dom
html
simple
使用
微博
抓取
操作
一直以来使用php解析html文档树都是一个难题。 Simple HTML DOM parser ?很好地解决了这个问题。可以通过这个php类来解析html文档,对其中的html元素进行操作 (PHP5+以上版本)。解析器不仅仅只是帮助我们验证html文档;更能解析不符合W3C标准的html文档。它
一直以来使用php解析html文档树都是一个难题。Simple HTML DOM parser?很好地解决了这个问题。可以通过这个php类来解析html文档,对其中的html元素进行操作 (PHP5+以上版本)。 解析器不仅仅只是帮助我们验证html文档;更能解析不符合W3C标准的html文档。它使用了类似jQuery的元素选择器,通过元素的id,class,tag等等来查找定位;同时还提供添加、删除、修改文档树的功能。和jq一样的操作还是很方便的。 有三种方式调用这个类: 从url中加载html文档 从字符串中加载html文档 从文件中加载html文档
<?php // 新建一个Dom实例 $html = new simple_html_dom(); // 从url中加载 $html->load_file('http://www.xxx.com'); // 从字符串中加载 $html->load('从字符串中加载html文档演示'); //从文件中加载 $html->load_file('path/file/test.html'); ?>
登入後複製
查找html元素
可以使用find函数来查找html文档中的元素。返回的结果是一个包含了对象的数组。我们使用HTML DOM解析类中的函数来访问这些对象,下面给出几个示例<?php //查找html文档中的超链接元素 $a = $html->find('a'); //查找文档中第(N)个超链接,如果没有找到则返回空数组. $a = $html->find('a', 0); // 查找id为main的div元素 $main = $html->find('div[id=main]',0); // 查找所有包含有id属性的div元素 $divs = $html->find('div[id]'); // 查找所有包含有id属性的元素 $divs = $html->find('[id]'); ?>
登入後複製
<?php // 查找id='#container'的元素 $ret = $html->find('#container'); // 找到所有class=foo的元素 $ret = $html->find('.foo'); // 查找多个html标签 $ret = $html->find('a, img'); // 还可以这样用 $ret = $html->find('a[title], img[title]'); ?>
登入後複製
<?php // 返回父元素 $e->parent; // 返回子元素数组 $e->children; // 通过索引号返回指定子元素 $e->children(0); // 返回第一个资源速 $e->first_child (); // 返回最后一个子元素 $e->last _child (); // 返回上一个相邻元素 $e->prev_sibling (); //返回下一个相邻元素 $e->next_sibling (); ?>
登入後複製
元素属性操作
使用简单的正则表达式来操作属性选择器。 [attribute] – 选择包含某属性的html元素 [attribute=value] – 选择所有指定值属性的html元素 [attribute!=value]- 选择所有非指定值属性的html元素 [attribute^=value] -选择所有指定值开头属性的html元素 [attribute$=value] 选择所有指定值结尾属性的html元素 [attribute*=value] -选择所有包含指定值属性的html元素如何避免解析器消耗过多内存
有时候可能Simple HTML DOM解析器消耗内存过多。如果php脚本占用内存太多,会导致网站停止响应等一系列严重的问题。解决的方法也很简单,在解析器加载html文档并使用完成后,记得清理掉这个对象就可以了。<?php $html->clear(); ?>
登入後複製
<?php header('Content-Type:text/html;charset=gbk'); include "simple_html_dom.php"; class Tmemcache { protected $memcache; function __construct($cluster) { $this->memcache = new Memcache; foreach ($cluster['memcached'] as $server) { $this->memcache->addServer($server['host'], $server['port']); } } function fetch($cache_key) { return $this->memcache->get($cache_key); } function store($cache_key, $val, $expire = 7200) { $this->memcache->set($cache_key, $val, MEMCACHE_COMPRESSED, $expire); } function flush() { $this->memcache->flush(); } function delete($cache_key, $timeout = 0) { $this->memcache->delete($cache_key, $timeout); } } function unicode_hex_2_gbk($name) { $a = json_decode('{"a":"' . $name . '"}'); if (isset($a) && is_object($a)) { return iconv('UTF-8', 'GBK//IGNORE', $a->a); return $a->a; } return null; } function curl_fetch($url, $time = 3) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, $time); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($ch); $errno = curl_errno($ch); if ($errno > 0) { $err = "[CURL] url:{$url} ; errno:{$errno} ; info:" . curl_error($ch) . ";"; echo $err; $data = false; } curl_close($ch); return $data; } $cluster["memcached"] = array( array("host" => "10.11.1.1", "port" => 11211), ); //$memcache = new Tmemcache($cluster); $url = "http://s.weibo.com/top/summary?cate=total&key=event"; $cache_key = md5("weibo" . $url); //$str = $memcache->fetch($cache_key); //if (!isset($_GET["nocache"]) && !empty($str)) { // echo $str; // exit; //} $content = curl_fetch($url); if ($content === false) exit; $html = str_get_html($content); $a = $html->find('script', 8); //测试 $a = str_replace(array('\\"', '\\/', "\\n", "\\t"), array('"', '/', "", ""), $a); $pos = strpos($a, ''); $a = substr($a, $pos); //////// //echo ""; //echo ($a); //echo ""; $html = str_get_html($a); $arr = array(); foreach ($html->find('table[id=event]', 0)->find('.rank_content') as $element) { $arr[] = unicode_hex_2_gbk($element->find("a", 0)->plaintext); } $html->clear(); $str = implode(",", $arr); //if (!isset($_GET["nocache"])) // $memcache->store($cache_key, $str, 3600); echo $str;
登入後複製
原文地址:抓取微博热词,使用simple_html_dom来操作html数据, 感谢原作者分享。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
<🎜>:種植花園 - 完整的突變指南
3 週前
By DDD
<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
如何修復KB5055612無法在Windows 10中安裝?
3 週前
By DDD
北端:融合系統,解釋
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲
