如何从html源中提取所有图像URL并使用curl下载它们?

时间:2012-01-06 12:56:22

标签: php html curl

我正在使用curl从外部网页的html源代码中获取图像。我在Firefox中的查看页面源上获得了 img original='imageurl' 。但是,当我选择特定图片时,它会在Firefox中的视图选择源上显示 img src='imageurl'

如何使用curl获取此类图像?

目前我正在使用正则表达式获取图片:

preg_match_all('/<img[^>]+>/i',$output, $result);   
print_r($result);  

但它不显示任何图像。

我很担心这里要做什么。有人有什么想法吗?

2 个答案:

答案 0 :(得分:3)

  

我很担心这里要做什么。

混淆可能是因为您使用webbrowser来查看URL的来源。即使通常情况下,webbrowser显示的页面源也是卷曲也会返回的数据,但情况并非总是如此。

特别是Firefox功能视图选择源不会显示原始资源中的选择,但通常会显示其他内容。为防止这种情况,您需要disable javascript in your Firefox browser­Docs。因为经常使用javascript修改文档并且你想看原文,而不是修改因为curl不能运行javascript,所以它只能得到“原版”。

  

有人有任何想法吗?

  1. 在浏览器中停用javascript。
  2. 重新加载页面。
  3. 找到您感兴趣的HTML源代码片段。
  4. 写下来,例如变成一个字符串。
  5. 使用CURL请求页面。输出来源。
  6. 在那里找到该字符串。如果它不在那里,请在curl请求结果中搜索您感兴趣的字符串,然后使用它。
  7. 编写一个能够从该字符串中获取所需内容的正则表达式。
  8. 然后在程序中使用该正则表达式。

答案 1 :(得分:1)

您的网络浏览器根据HTML理解/解析HTML页面的方式重新格式化HTML。

当您选择“查看页面来源”时,它会显示从服务器提供的原始源代码。

当您选择内容并选择“查看选择源”时,它会显示浏览器已解析为所选内容的DOM(浏览器理解的内容)。

我猜你正在使用Firefox

如果您尝试使用cURL处理从服务器提供的HTML,则不得查看页面的“查看选择源”,始终参考“查看页面源“ ..

<强>最终

您应该参考来自cURL的ACTUAL结果

例如:

$content = curl_exec($ch);

header("Content-type: text/plain");
echo $content;

这应该恰好回应了cURL从服务器收到的内容......

注意:这是https://stackoverflow.com/questions/8754844/can-not-get-images-using-curl

的重新发布

<强>此外

如果要在<img src="">标记内获取实际图像,则需要使用preg_match在结果HTML响应中指向IMG标记,并对IMG SRC执行单独的cURL请求