我正在尝试使用simple_html_dom获取帖子的标题html根可以在我想要获得的部分下面看到标题为这是我们的标题。
<div id="content">
<div id="section">
<div id="sectionleft">
<p>
Latest News
</p>
<ul class="cont news">
<li>
<div style="padding: 1px;">
<a href="http://www.example.com">
<img src="http://www.example.com/our-image.png" width="128" height="96" alt="">
</a>
</div>
<a href="http://www.example.com" class="name">
This is our title
</a>
<i class="info">added: Dec 16, 2015</i>
</li>
</ul>
</div>
</div>
</div>
目前我有这个
$page = (isset($_GET['p'])&&$_GET['p']!=0) ? (int) $_GET['p'] : '';
$html = file_get_html('http://www.example.com/'.$page);
foreach($html->find('div#section ul.cont li div a') as $element)
{
print '<br><br>';
echo $url = 'http://www.example.com/'.$element->href;
$html2 = file_get_html($url);
print '<br>';
$image = $html2->find('meta[property=og:image]',0);
print $image = $image->content;
print '<br>';
$title = $html2->find('#sectionleft ul.cont news li a.name',0);
print $title = $title->plaintext;
print '<br>';
}
问题在这里$title = $html2->find('#sectionleft ul.cont news li a.name',0);
我假设我使用了错误的选择器,但我确实不确定我做错了什么..
答案 0 :(得分:3)
ul.cont news
表示“查找<news>
的子ul.cont
元素。”
你真的想要:
#sectionleft ul.cont.news li a.name
编辑:出于某种原因,似乎simple_html_dom
不喜欢ul.cont.news
,即使它是有效的CSS选择器。
你可以尝试
#sectionleft ul[class="cont news"] li a.name
只要>>这些类 顺序,就应该。
答案 1 :(得分:0)
如果这看起来有些 hacky ,请原谅我,但是......你总是可以使用PHP来快速运行.js
:
<?php
echo '<script>';
echo 'var postTitle = document.querySelector("ul.cont.news a.name").innerHTML;';
if (!isset($_GET['posttitle'])) {
echo 'window.location.href = window.location.href + "?posttitle=" + postTitle';}
echo '</script>';
$postTitle = $_GET['posttitle'];
?>