2013-09-23 3 views
1

Я ищу способ соскрести веб-сайт со стороны сервера (который использует javascript) и сохранить результат после анализа данных в базе данных mysql. Мне нужно перейти со страницы на страницу, щелкнув ссылки и отправив данные из базы данных без истечения срока действия сеанса. Возможно ли это с помощью плагина веб-браузера phpquery? , Я начал делать это с помощью casperjs. Я хотел бы знать плюсы и минусы обоих методов. Я новичок в кодировании. Пожалуйста помоги.Скремблирование сайта с javascript

+0

Такого рода "* A или B *?" вопрос действительно не по теме для переполнения стека. Для phpQuery может потребоваться дополнительный плагин, но он должен быть способен. При этом выясните, есть ли на сайте общедоступный API, который вы можете использовать или обратитесь к владельцам, чтобы узнать, готовы ли они его создать. Хороший API почти наверняка будет проще использовать. –

+0

Его правительственный сайт, и он не имеет api. :( –

+0

Было бы намного проще посоветовать вам, если бы мы знали, какие данные вы хотели и откуда ... – shennan

ответ

2

Я бы рекомендовал вам использовать PhantomJS или CasperJS и проанализировать DOM с помощью селекторов JavaScript, чтобы получить части страниц, которые вы хотите вернуть. Не используйте phpQuery, поскольку он основан на PHP и потребует отдельного шага в вашей обработке вместо использования только разбора JavaScript DOM. Кроме того, вы не сможете выполнять события click с помощью PHP. Любая клиентская сторона должна быть запущена в PhantomJS или CasperJS.

Возможно, даже можно написать полный очищающий движок, используя только PHP, если это ваш серверный язык выбора. Вам нужно будет перестроить процесс входа в систему и поддерживать куки-файлы cookie с вашими запросами cURL, чтобы ваш логин был действительным с каждым запросом. После того, как вы установили сеанс с веб-сайтом, вы можете настроить свой путь навигации с помощью массива ссылок, которые вы хотите просканировать. Идея веб-сканирования заключается в том, что вы загружаете страницу с некоторой ссылки и обрабатываете страницу, а затем переходите к следующей ссылке. Вы продолжаете этот процесс до тех пор, пока все страницы не будут обработаны, а затем ваш обход будет завершен.

0

Я бы воспользовался Google Guide Making AJAX Applications Crawlable, сайт, который вы пытаетесь ломать, мог принять схему (сделать контент своего сайта сканируемым).

Вы хотите найти #! в хэш-фрагменте URL, это указывает на искателя, что сайт поддерживает схему обхода AJAX.

Проще говоря, когда вы сталкиваетесь с таким URL-адресом. www.example.com/ajax.html#!key=value, вы должны изменить его на www.example.com/ajax.html?_escaped_fragment_=key=value. Сервер должен ответить на HTML-снимок этой страницы.

Вот Full Specification

+1

Вряд ли кто-нибудь это использует. Было бы гораздо более совместимо использовать что-то вроде PhantomJS. – Brad

+0

Я видел, как он использовался на нескольких более крупных сайтах, но я согласен с тем, что он не очень распространен. –

Смежные вопросы