Главная » 2015 » Март » 27 » Сохраняем данные с сайтов
17:27
Сохраняем данные с сайтов

В данной статье опишу вам реализацию одной идеи несколькими способами.

Задание: Требуется пройти по трем URL адресам и сохранить информацию.
Реализация: Будет представлено три варианта реализации — Imacros, Autoit, Bash Linux.

Судите сами какой вариант вам выбрать. Будем заходить последовательно на yandex, google и bing, делать запрос «купить слона» и сохранять результаты выдачи в папку.

Итак, начнем с Imacros.

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}}

Google

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.

опции 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 в папку откуда запускаем скрипт.

Google

#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
Категория: Автоматизация | Просмотров: 334 | Добавил: Semmy | Теги: imacros, Bash Linux, autoit | Рейтинг: 0.0/0
Всего комментариев: 2
avatar
0
1 kulaef • 18:41, 17.05.2016
Приветствую! Не мог бы ты ответить на такой вопрос:
Нужно спарсить фоловеров твитер-акка (любого)
Делаю так :
SET !ERRORIGNORE YES
‘URL GOTO=https://mobile.twitter.com/OllyMolander/followers
TAG POS={{!LOOP}} TYPE=SPAN ATTR=CLASS:username EXTRACT=TXT
‘PROMPT {{!EXTRACT}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=usertwit.txt
Но натыкаюсь на проблему в том что выдается только 20-ть результатов на страницу ( нужно работать только с мобильным юзер агентом ,допустим Android , для того что бы была кнопка «Показать больше» )
Так нажимаю на кнопку:
EVENT TYPE=CLICK SELECTOR=»#main_content>DIV>DIV:nth-of-type(2)>DIV>A» BUTTON=0

Как же так сделать что бы собрать 20-ть фоловеров и потом нажать на кнопку , и так по кругу ?
Заранее благодарен за ответ !
avatar
0
2 Semmy • 18:44, 17.05.2016
Задать нужный юзер агент в браузере можно поставив плагин RDS Bar. Для парсинга фолловеров я бы использовал более подходящий инструмент — программу Twidium. Она хоть и условно — бесплатная, но может полноценно работать в течении недели. Есть еще виртуальные машины, где можно ее поставить и использовать без вреда для реестра.
Imacros с Twitter всегда работал достаточно коряво, так как эта социальная сеть кишит ботами, и там всячески с ними борются. Чтобы повторить какие-то действия в скрипте, впишите эти строки туда столько раз, сколько нужно. Если код для повтора слишком большой, оформите эти строки в отдельный скрипт и вызывайте его из текущего сколько нужно раз.
avatar