0

我有这样结构的html页面

<div id="1">
  <div id="2">
    <div id="3">
      <div id="4">
        <div id="5">   
          <div id="photo">    
            <a id="photo" href="link">
              <img width="200" src="http://site.com/photo.jpg"> 
            </a> 
          </div>
          <div id="info"></div>
        </div>
      </div> 
    </div> 
  </div> 
</div> 

我需要获取 img url ( http://site.com/... )

我的代码:

include('simple_html_dom.php');

// Create a DOM object from a URL
$html = file_get_html('http://site.com/123');


// find all div tags with id=gbar
foreach($html->find('img[width="200"]') as $e)
    echo $e->src . '<br>';

但它不适用于这个网站。
可能有另一种获取图片网址的方法

4

3 回答 3

0

应该可能$html->find('img[width=200]')没有额外的引号200

于 2013-03-06T10:09:33.707 回答
0

正如预期的那样,该站​​点根据用户代理提供不同的内容,以获取您期望的 HTML,您需要让服务器知道您需要“浏览器”版本。例如,您可以删除此行:

$html = file_get_html('http://vk.com/durov');

...并将其替换为以下内容:

$context = stream_context_create(array('http' => array(
  'header' => 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17'
)));
$html = str_get_html( file_get_contents('http://vk.com/durov', false, $context) );

我应该注意到,欺骗 User-Agent 的做法通常是不受欢迎的,您也许应该运行它来查看包含的信息是否适合您的需求:

<?php
  header('Content-type: text/plain');
  echo file_get_contents('http://siteurl.com');

这将显示网站希望机器人看到的源代码 - 对于有问题的网站,这是页面的轻量级版本 - 从您的角度来看,它需要更少的时间来处理。

于 2013-03-06T10:38:54.083 回答
0

您可以使用正则表达式来查找它,例如:

<?php 
$string = '
<div id="1">
  <div id="2">
    <div id="3">
      <div id="4">
        <div id="5">   
          <div id="photo">    
            <a id="photo" href="link">
              <img width="200" src="http://site.com/photo.jpg"> 
            </a> 
          </div>
          <div id="info"></div>
        </div>
      </div> 
    </div> 
  </div> 
</div> ';

$pattern = '/http[^""]+/';
preg_match($pattern, $string, $matches);
print_r($matches);

印刷:

Array
(
    [0] => http://site.com/photo.jpg
)
于 2013-03-06T10:52:21.857 回答