Сохраняем данные с сайтов
В данной статье опишу вам реализацию одной идеи несколькими способами.
Задание: Требуется пройти по трем URL адресам и сохранить информацию.
Реализация: Будет представлено три варианта реализации — Imacros, Autoit, Bash Linux.
Судите сами какой вариант вам выбрать. Будем заходить последовательно на yandex, google и bing, делать запрос «купить слона» и сохранять результаты выдачи в папку.
Итак, начнем с Imacros.
Google
Google
Задание: Требуется пройти по трем URL адресам и сохранить информацию.
Реализация: Будет представлено три варианта реализации — Imacros, Autoit, Bash Linux.
Судите сами какой вариант вам выбрать. Будем заходить последовательно на yandex, google и bing, делать запрос «купить слона» и сохранять результаты выдачи в папку.
Yandex
- VERSION BUILD=8890130 RECORDER=FX
- TAB T=1
- URL GOTO=about:newtab
- URL GOTO=yandex.ru/
- EVENTS TYPE=KEYPRESS SELECTOR="#text" CHARS="купить слона"
- EVENT TYPE=KEYPRESS SELECTOR="#text" KEY=13
- SAVEAS TYPE=CPL FOLDER=* FILE=+_{{!NOW:yyyymmdd_hhnnss}}
- VERSION BUILD=8890130 RECORDER=FX
- TAB T=1
- URL GOTO=about:newtab
- URL GOTO=www.google.com/
- EVENT TYPE=KEYPRESS SELECTOR="#lst-ib" KEY=0
- EVENTS TYPE=KEYPRESS SELECTOR="#lst-ib" CHARS="купить слона"
- EVENT TYPE=CLICK SELECTOR="#tsf>DIV:nth-of-type(2)" BUTTON=0
- EVENT TYPE=CLICK SELECTOR="#tsf>DIV:nth-of-type(2)>DIV:nth-of-type(3)>CENTER>INPUT" BUTTON=0
- SAVEAS TYPE=CPL FOLDER=* FILE=+_{{!NOW:yyyymmdd_hhnnss}}
Bing
- VERSION BUILD=8890130 RECORDER=FX
- TAB T=1
- URL GOTO=http://www.bing.com/
- TAG POS=1 TYPE=INPUT:SEARCH FORM=ID:sb_form ATTR=ID:sb_form_q CONTENT=купитьслонавкараганде
- TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:sb_form ATTR=ID:sb_form_go
- SAVEAS TYPE=CPL FOLDER=* FILE=+_{{!NOW:yyyymmdd_hhnnss}}
Для тех, кто «не в теме», Imacros сохраняет данные в папку по-умолчанию. Посмотреть где она или задать новый путь вы можете так, как показано на картинках.
Жмете на кнопку «Опции» на панели Imacros.
Теперь сделаем то же самое в Autoit:
Yandex
- #Include <INet.au3>
- $HTML = _INetGetSource('http://yandex.ru/yandsearch?lr=13&text=купить+слона')
- FileWrite(@ScriptDir & '\yandex-search.html', $HTML)
Во второй строке получаем html код страницы.
В третьей строке сохраняем все в файл yandex-search.html в папку откуда запускаем скрипт.
- #Include <INet.au3>
- $HTML = _INetGetSource('https://www.google.ru/search?q=купить+слона')
- FileWrite(@ScriptDir & '\google-search.html', $HTML)
Bing
- #Include <INet.au3>
- $HTML = _INetGetSource('http://www.bing.com/search?q=%D0%BA%D1%83%D0%BF%D0%B8%D1%82%D1%8C%20%D1%81%D0%BB%D0%BE%D0%BD%D0%B0')
- FileWrite(@ScriptDir & '\bing-search.html', $HTML)
В данном примере пришлось преобразовать кириллицу в html символы, чтобы Bing «понял» что нам нужно.
Если вы работаете с браузером, то допустимо так делать если, скрипт «затыкается» на кириллице.
Как вы успели заметить, размер скрипта в Autoit намного короче, чем в Imacros. К тому же скрипт Imacros жестко привязан к верстке сайта и при его изменении его надо заново переделывать.
А скрипты для Autoit, приведенные в примере выше, вообще не привязаны к верстке сайта и работают в фоне не мешая браузеру. Скрипт Autoit можно преобразовать в .exe файл и запускать по времени через планировщик в фоновом режиме.
Ну, и в заключении реализуем это в скрипте Bash, работающем в Linux:
Yandex,Google,Bing — 3 в одном файле
- #!/bin/bash
- sss="http://yandex.ru/yandsearch?lr=13&text=%D0%BA%D1%83%D0%BF%D0%B8%D1%82%D1%8C%20%D1%81%D0%BB%D0%BE%D0%BD%D0%B0"
- wget -E -nc --load-cookies=cook --save-cookies=cook --keep-session-cookies --user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0" $sss
- sss="https://www.google.ru/search?q=купить+слона"
- wget -E -nc --load-cookies=cook --save-cookies=cook --keep-session-cookies --user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0" $sss
- sss="http://www.bing.com/search?q=%D0%BA%D1%83%D0%BF%D0%B8%D1%82%D1%8C%20%D1%81%D0%BB%D0%BE%D0%BD%D0%B0"
- wget -E -nc --load-cookies=cook --save-cookies=cook --keep-session-cookies --user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0" $sss
- # После этого символа можно комментировать
Скрипт на bash работает без привязки к браузеру. Хотя в коде пришлось эмулировать user-agent и cookies чтобы «обмануть» эти сайты. Также данный скрипт можно запускать по крону (по времени) в фоновом режиме.
Вот что мне потребовалось для реализации этой задачи:
- На Imacros — windows+mozilla firefox+imacros для firefox
- На Autoit — windows+autoit
- На Bash — Любой Linux+wget
Комментарии
Отправить комментарий