我尝试了几种不同的方法,但似乎没有任何效果。 (我尝试了How to imitate child selector with Simple HTML DOM?处的所有示例)按原样使用代码,改变我需要的东西,即class = xxx和url。
所以我正在尝试从网页中提取一些信息。就DOM而言,没有孩子可以使用,并且使用xpath方法没有返回任何内容。我猜我做错了什么。
<div id="wpp-6" class="widget popular-posts">
<div class="widget_title">POPULAR</div><!-- Wordpress Popular Posts Plugin v2.3.2 [Widget] [daily] [regular] -->
<ul>
<li>
<a href="http://link.html" title="Title of post" class="wpp-post-title">THE DATA I WANT</a> <span class="post-stats"></span>
</li>
<!-- More lists -->
</ul>
</div>
之后还有大约9个列表语句。 有什么建议吗?
答案 0 :(得分:2)
使用PHP Simple HTML DOM Parser您可以轻松完成,只需下载simple_html_dom.php
文件from here并按如下方式使用即可。
include('simple_html_dom.php');
$html=file_get_html('http://psfk.com');
foreach($html->find('div#wpp-6 ul li a') as $a){
echo $a->innertext.'<br />';
}
谷歌流感地图描绘了美国最严重的疫情
Scotch-Tape Portraits Contort Human Faces [Pics]
奥威尔1949年四大亮点主题的新设计 审查
伏特加过滤酒裸体模特[视频]
三星推出灵活屏幕
麦当劳在澳大利亚更名:
三星的透明屏幕是未来的零售窗口 [CES]
Dita Von Teese将QR码直接送入她的衣服
Abercrombie&amp;惠誉老板让飞行服务员只穿拳击手 &安培;私人飞机上的凉鞋
镜子应用程序向女性展示如果她们继续饮酒会如何年龄
如果您想使用link
<a>...</a>
打印标题,请使用echo $a
答案 1 :(得分:0)
我使用xpath已经有一段时间了,所以这是我的解决方案 您可以通过这种方式遍历DOM树,检查所需元素的id和类
<?php
error_reporting(0); //needed because of invalid xml
$url = "http://www.psfk.com";
$xml = new DOMDocument("1.0", 'UTF-8');
$str = file_get_contents($url);
// Load the url's contents into the DOM
$xml->loadHTML($str);
//Loop through all divs in the dom until we find what we need
foreach($xml->getElementsByTagName('div') as $div) {
if($div->getAttribute('id') == 'wpp-6' && $div->getAttribute('class') == 'widget popular-posts') {
if($div->parentNode->getAttribute('id') == 'right') {
foreach($div->getElementsByTagName('li') as $li) {
foreach($li->getElementsByTagName('a') as $link) {
echo $link->textContent . "<br>";;
}
}
}
}
}
?>