#javascript #xml #ajax #http
#javascript #xml #ajax #http
Вопрос:
Мне нужно создать систему для извлечения огромных объемов данных из коллекции веб-страниц. Многие из этих сайтов (возможно, около 90%) работают на различных системах javascript. Мне интересно, какой наиболее эффективный метод извлечения этих данных?
Поскольку каждый сайт индивидуален, я ищу гибкое решение, а поскольку сайтов много, я ищу решение, которое будет оказывать как можно меньшую нагрузку на мою сеть.
Большая часть моего опыта программирования связана с C, C и Perl, но я рад всему, что дает наилучший результат.
На веб-страницах постоянно обновляются цифры и статистика, которые я хочу извлечь и выполнить некоторый анализ, поэтому мне нужно иметь возможность легко сохранять их в базе данных.
Я провел собственное исследование, но здесь у меня действительно ничего не получается. Я надеюсь, что кто-нибудь еще сможет мне помочь! 🙂
Комментарии:
1. «Очистка» довольно неэтична. Что вы пытаетесь сделать?
2. Некоторый статистический анализ того, как меняются коэффициенты в букмекерских конторах.
3. Вероятно, вы можете написать какое-нибудь регулярное выражение для извлечения части (ов) данных. На самом деле в этом нет ничего особенного.
4. @Frits это много значит, если данные поступают через Javascript 🙂
Ответ №1:
Вам понадобится браузер, который интерпретирует JavaScript и выполняет фактические запросы за вас. Затем вам нужно будет сделать DOM-снимок интерпретируемого результата. Это не будет тривиальным, и это будет невозможно в чистом PHP.
У меня нет собственного опыта работы с этим, но, возможно, пакет Selenium может помочь. Это пакет автоматизации, используемый для тестирования программного обеспечения, но, согласно этой статье, в некоторой степени может также использоваться для очистки.
Комментарии:
1. Это выглядит очень интересно, приветствую! Мне интересно, насколько быстро это будет? Если он открывает вкладку каждый раз, я не могу представить, что очистка более 30 веб-сайтов как можно чаще будет происходить быстро. Я обязательно изучу больше. Спасибо.
Ответ №2:
Возможно, вам стоит попробовать PHP DOMDocument class. Например, этот код «украдет» все теги таблицы из URL.
$data=array();
$url='your.site.com';
$out=file_get_contents($url);
$dom=new DOMDocument();
$dom->loadHTML($out);
foreach($dom->getElementsByTagName('table') as $table){
data[]=$table->nodeValue;
}
print_r($data);
Вы можете использовать весь DOM и анализировать весь HTML-документ и управлять им. Рассмотрите возможность асинхронного вызова этого скрипта с использованием AJAX-подхода.
Комментарии:
1. Это не поможет в случае сайтов на Javascript, которые, по его словам, являются его основным направлением.
2. как насчет кражи тегов <script>?
3. @razorxan вам все еще нужно выполнить Javascript, чтобы получить значимые результаты. Как вы это делаете на чистом PHP?
4. @razor и как бы вы сделали Ajax-запрос на PHP и интерпретировали результат (JavaScript)? Для этого вам понадобится полноценный движок JavaScript. Я не вижу способа сделать это в PHP.
5. Могу ли я запустить что-то вроде SpiderMonkey для выполнения Javascript в этом случае?