获得帖子的标题

时间:2015-12-16 18:39:17

标签: php html

我正在尝试使用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);我假设我使用了错误的选择器,但我确实不确定我做错了什么..

2 个答案:

答案 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'];

?>