Php 从NYtimes中删除缩略图
我的抓取代码适用于我在测试时访问的几乎每个站点。。。除了纽约时报网站的文章。我将ajax与以下PHP代码一起使用(我省略了一些细节来关注我的具体问题):Php 从NYtimes中删除缩略图,php,web-scraping,pinterest,Php,Web Scraping,Pinterest,我的抓取代码适用于我在测试时访问的几乎每个站点。。。除了纽约时报网站的文章。我将ajax与以下PHP代码一起使用(我省略了一些细节来关注我的具体问题): $link=”http://www.nytimes.com/2014/02/07/us/huge-leak-of-coal-ash-slows-at-north-carolina-power-plant.html?hp"; $article=新文档; $article->loadHTMLFile($link); //生成图像阵列 $images
$link=”http://www.nytimes.com/2014/02/07/us/huge-leak-of-coal-ash-slows-at-north-carolina-power-plant.html?hp";
$article=新文档;
$article->loadHTMLFile($link);
//生成图像阵列
$images=$article->getElementsByTagName(“img”);
foreach($images作为$image){
$source=$image->getAttribute(“src”);
回音“
”;
}
我的问题是,《纽约时报》页面上的主要图像似乎都没有被getElementsByTagName所捕获。Pinterest找到了一种从这个网站上抓取主要图片的方法,例如:然而我不能。有什么建议吗 好的。这就是我尝试过的,我发现你的问题很有趣 当我使用jQuery在浏览器控制台上执行此操作时,我确实会在图像上获得结果。我的问题是
var a= new Array();
$('img[src]').each(function(){ a.push($(this).attr('src'));});
console.log(a);
另请参见结果的屏幕截图
请注意,console.log(arrayname)
在Chrome浏览器中工作
因此,理想情况下,您的代码必须工作。请考虑添加<代码> IS0NULL/<代码>检查,就像我已经做的一样。
下面是我尝试使用不同的方法加载URL的代码(也许也更好),并找到了为什么只得到一张NYT徽标图像的根本原因
结果HTML屏幕截图已附加
<?php
$html = file_get_contents("http://www.nytimes.com/2014/02/07/us/huge-leak-of-coal-ash-slows-at-north-carolina-power-plant.html?hp");
echo $html;
$doc = new DOMDocument();
$doc->strictErrorChecking = false;
$doc->recover=true;
@$doc->loadHTML("<html><body>".$html."</body></html>");
$xpath = new DOMXpath($doc);
$images = $xpath->query("//*/img");
if (!is_null($images)) {
echo sizeof($images);
foreach ($images as $image) {
$source = $image->getAttribute('src');
echo '<img src="' . $source . '" alt="alt"><br><br>';
}
}
?>
除非经过身份验证,否则无法通过提要获取内容。
你可以试试-
file\u get\u contents
方法中使用上下文参数文件\u get\u contents
方法中。附言:这很有效我希望你的链接是,而不是你在这里给出的$link是一个变量的原因是因为我有它从ajax接收数据,用户将数据放入表单中。当然,为了清晰起见,我已经添加了链接。有没有一种方法可以自动将页面下载为html?例如,我是否可以自动将远程文件下载到服务器上的tmp文件夹中,然后从那里加载,而无需手动转到《纽约时报》页面?您可以使用Firefox中的Selenium插件,使用存储的脚本直接从浏览器中抓取图像和网页。一个Selenium插件(离线创建后)可以通过将站点名称作为参数传递到多个站点上运行。有趣的是,我将查看Selenium。不幸的是,我正在创建一个web应用程序刮板(如pinterest),这样用户就可以自动完成这项工作。我想我可能只需要使用NYTAPI。。。
<?php
$html = file_get_contents("http://www.nytimes.com/2014/02/07/us/huge-leak-of-coal-ash-slows-at-north-carolina-power-plant.html?hp");
echo $html;
$doc = new DOMDocument();
$doc->strictErrorChecking = false;
$doc->recover=true;
@$doc->loadHTML("<html><body>".$html."</body></html>");
$xpath = new DOMXpath($doc);
$images = $xpath->query("//*/img");
if (!is_null($images)) {
echo sizeof($images);
foreach ($images as $image) {
$source = $image->getAttribute('src');
echo '<img src="' . $source . '" alt="alt"><br><br>';
}
}
?>