首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能用php dom解析器解析特定链接

不能用php dom解析器解析特定链接
EN

Stack Overflow用户
提问于 2014-09-15 04:27:09
回答 1查看 116关注 0票数 0

我正在用php中的dom解析器解析一些itunes链接。与大多数的链接,它完美地工作。其他完全相同类型的人,不是吗?!我需要"img“标签和”src-交换-high-dpi“属性。把我逼疯了。这是我的php代码的一部分

代码语言:javascript
复制
$url = "https://itunes.apple.com/us/podcast/id278981407";
$htmlContent = str_get_html(file_get_contents($url));

foreach ($htmlContent->find("img") as $element) {
$value  = $element->getAttribute("src-swap-high-dpi");
echo $value;
}

例如,我可以解析以下链接:https://itunes.apple.com/us/podcast/id201671138

https://itunes.apple.com/us/podcast/id523121474

https://itunes.apple.com/us/podcast/id152249110

但这一点,例如,没有:

https://itunes.apple.com/us/podcast/id278981407

我没有得到任何输出。

编辑:

新代码也不起作用:

还是不为我工作。很奇怪。这是我的新的完整代码:

代码语言:javascript
复制
 <?php
 ini_set("display_errors",1); error_reporting(E_ALL);
 require_once ('simple_html_dom.php');

 $url = "https://itunes.apple.com/us/podcast/id278981407";

 $htmlContent = str_get_html(file_get_contents($url));


foreach($htmlContent->find("div.artwork") as $div) {
 $value = $div->find("img",0)->getAttribute("src-swap-high-dpi");
 echo $value."<br/>";
 }

?>

我得到了输出:

代码语言:javascript
复制
Fatal error: Call to a member function find() on a non-object in /home/www/whatever/delete.php on line 10

第10行是以"foreach“开头的行。您的代码可以很好地处理上面提供的链接,我声明这些链接是工作的。但是,一旦我采取其中一个指定的不工作,我得到了上述错误信息。?!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-15 05:08:33

我认为这是简单DOM有点混乱的情况之一,您需要为它提供一个父级:

代码语言:javascript
复制
$url = "https://itunes.apple.com/us/podcast/id278981407";
$htmlContent = str_get_html(file_get_contents($url));
foreach($htmlContent->find("div.artwork") as $div) {
   $value = $div->find("img",0)->getAttribute("src-swap-high-dpi");
   echo $value."<br/>";
}

更新

下面是使用上述片段的结果:

代码语言:javascript
复制
http://a3.mzstatic.com/us/r30/Podcasts/v4/61/cc/7f/61cc7f25-131f-7616-6549-5553e6444b87/mza_7489225285918350214.150x150-75.jpg
http://a2.mzstatic.com/us/r30/Podcasts6/v4/04/a9/64/04a964d7-7c10-72d6-871b-97619cf89066/mza_1416781107029663068.150x150-75.jpg
http://a5.mzstatic.com/us/r30/Podcasts4/v4/bb/a6/f4/bba6f4b6-eeab-d7d9-8591-adb2bd277ccb/mza_5223368352447971673.150x150-75.jpg
http://a1.mzstatic.com/us/r30/Podcasts5/v4/aa/54/16/aa541600-cc8b-772b-9c0a-824efe8fdc42/mza_6772270613386652594.150x150-75.jpg
http://a2.mzstatic.com/us/r30/Podcasts3/v4/95/3d/2f/953d2f75-c2c2-4815-a752-f30fdcc0b9fb/mza_9037746738018570312.150x150-75.jpg
http://a4.mzstatic.com/us/r30/Podcasts4/v4/a2/1c/f5/a21cf5a4-2d8d-1ed7-983f-1c90f2f4f948/mza_7120473049241631392.340x340-75.jpg
http://a2.mzstatic.com/us/r30/Podcasts4/v4/5d/21/8d/5d218d2a-2980-0ac9-0bc7-9321ea6eb334/mza_6358466742996313573.150x150-75.jpg
http://a1.mzstatic.com/us/r30/Podcasts/b2/bb/bf/ps.ykmejwzs.150x150-75.jpg
http://a4.mzstatic.com/us/r30/Podcasts6/v4/17/ea/31/17ea3187-ef8c-4756-e488-0c65adced988/mza_7931750363714403933.150x150-75.jpg
http://a1.mzstatic.com/us/r30/Podcasts2/v4/0b/3c/7d/0b3c7d2b-19bf-f7a2-7c50-ca15338b8316/mza_2792239161425784587.150x150-75.jpg

你能证实一下你根本没有收到错误吗?比方说,只要在PHP文件中写一些奇怪的字符,PHP就会显示错误吗?如果没有,请尝试将其添加到.htaccess文件中。

代码语言:javascript
复制
<IfModule mod_php5.c>
   # do not display errors
   php_value display_errors 1
</IfModule>

更新2

代码语言:javascript
复制
$url = "https://itunes.apple.com/us/podcast/id278981407";

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
$html = curl_exec($ch);
curl_close($ch);

//$htmlContent = str_get_html(file_get_contents($url));
$htmlContent = str_get_html($html);
foreach($htmlContent->find("div.artwork") as $div) {
   $value = $div->find("img",0)->getAttribute("src-swap-high-dpi");
   echo $value."<br/>";
}

我之所以没有使用简单Dom的file_get_html,是因为它只是在内部使用file_get_contents

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25840824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档