Извлечение данных с веб-страниц javascript

#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 в этом случае?