Я создаю приложение, которое получает HTML-источник с различных сайтов.Используя xpath или простой html dom, я могу довольно легко разобрать этот html и передать его в базу данных и т. Д.
К сожалению, этот подход не работает для одного конкретного сайта.Это связано с тем, что сайт загружает свое содержимое с помощью JavaScript, и поэтому большая часть его содержимого не отображается в источнике html.
Снова и снова гуглив это, прочитайте множество потоков, охватывающих эту тему здесь, в Stackoverflow.Я до сих пор не знаю, как решить эту проблему.
Вот важная часть кода, который этот сайт использует для отображения своего контента.
<script type="text/javascript" src="/jquery-1.3.2.min.js"></script>
<script>
var example = {
getServiceCall:function(url) {
{
var srtPos=url.indexOf('Filter');
var endPos=url.indexOf('/',srtPos);
var filter = $.getUrlVar("Filter");
var filterInServiceUrl=url.slice(srtPos,endPos).split(":");
url = (filter)
? url.slice(0,srtPos) + filter + url.slice(endPos,url.length)
: url.slice(0,srtPos) + filterInServiceUrl[1] + url.slice(endPos,url.length);
}
document.writeln('<scri'+'pt src="'+url+'" type="text/javascript"> </sc' + 'ript>');
},
};
$.extend({
getUrlVars: function(){
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
},
getUrlVar: function(name){
}
});
</script>
<div id="content">
<script language="javascript" type="text/javascript">
function doPerItem(html){ $("#content").html(html.toString()); }
example.getServiceCall('http://www.example.com/?callback=doPerItem');
</script>
</div>
Использование Inspect Element вGoogle Chrome Я вижу, что есть файл, содержащий html-источник, который мне нужен.
Как я могу использовать php, чтобы сделать тот же запрос / аргументы для удаленной подачи, а затем сохранить ответ в файл?
Тогда я смогу разобрать его с помощью xpath или простого html dom, как и другие сайты.
Ваша помощь будет высоко оценена.