Я проверил это, и оно работает.Надеюсь, мое понимание «работы» такое же, как и ваше.Здесь есть несколько хитростей, потому что изображения, к которым вам нужно получить доступ, создаются при помощи рендеринга javascript в браузере, поэтому соскребание экрана на стороне сервера будет недостаточным (если вещи не станут действительно сложными, и я не буду там).Кроме того, все сложно, поскольку загружаемый вами контент находится в удаленном домене (www.google.com), а это означает, что существуют ограничения на то, как вы можете получить доступ к этому контенту в браузере (на самом деле это невозможно сделать через Ajax без надлежащегоЗаголовки Access-Control-Allow-Origin на сервере Google; невозможно получить к нему доступ, встроив прямой iframe для аналогичных ограничений, предотвращающих междоменную манипуляцию DOM).Итак, мне пришлось обойти оба этих ограничения.Одно замечание - я понимаю, что вы не просили jQuery, но, честно говоря, здесь стало намного проще, и я воспользовался им.Итак, вот как я это получил:
index.cfm
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(function () {
$("#googleFrame").load(function () { // bind to the load event, so we'll know that the embedded resources will all have finished rendering (including the images we're after)
// this will simply include the images from google on the current page
$("#rippedGoogleImages")
.html('') // remove the loading message
.append($(this).contents().find("img.goog-serverchart-image")); // pull the loaded images out of the frame
// if you just want to see the URLs of those images:
/* $(this).contents().find("img.goog-serverchart-image").each(function (){
console.log($(this).attr('src'));
});
*/
});
$("#googleFrame").attr("src", "googleProxy.cfm"); // trickiness that will become clear below
});
</script>
<iframe id="googleFrame" style="display:none"></iframe><!-- hidden iframe -->
<h1>Finance Images</h1>
<div id="rippedGoogleImages">
Loading Images From Google...
</div>
И ключ, который позволяет нам обойти ограничения между доменами, файл, который выполняет прямой запрос в Google насервер: googleProxy.cfm:
<cfhttp url="http://www.google.com/finance?q=NASDAQ:SQNM&fstype=ii">
<cfoutput>
#cfhttp.filecontent#
</cfoutput>
<!--- The next line injects the necessary base href to allow the resources (js, css, images, etc...) to resolve correctly when served from this new location --->
<cfhtmlhead text="<base href='http://www.google.com/finance/'>">
Все выполнено без неприятной очистки экрана или регулярных выражений на стороне сервера.