Что нового

Отправка интернет-запросов по БД и запись результатов в Excel

Alexaut

Новичок
Сообщения
23
Репутация
1
Имеется база адресов картинок типа: http://s.photosight.ru/img/2/42e/4291922_icon.jpg и т.д. записанных в столбцах Excel. Задача, - определить встречаемость аналогов каждой картинки на интернете. Используем для этого поисковик Гугл-картинки. Для отдельно взятого изображения задачка решается, например, так:

Код:
; подключение библиотеки IE
#include <IE.au3>
; открываем страницу Гугл-картинки
$oIE = _IECreate ("http://www.google.ru/imghp?hl=ru&tab=wi")
; Ждем, пока перезагрузится странинца
_IELoadWait ($oIE)
;кликаем на иконку Фотик
$oFotik= _IEGetObjById($oIE, "qbi")
_IEAction ($oFotik, "click")
send("http://s.photosight.ru/img/2/42e/4291922_icon.jpg"); В строку поиска вводим адрес картинки, для которой определяем встречаемость
send("{Enter}"); Получаем искомое "Результатов: примерно 18"
Получаем значение встречаемости - "Результатов: примерно 18" (Примечание: скрипт работает в IE8).

Вопрос: как расписать последовательный ввод из Excel адресов картинок в ГУгл и запись результатов встречаемости в параллельный столбец того же файла Excel? - Спасибо!
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Ниже Excel файл, дабы не возникало вопросов. По аналогии можете подогнать под свой файл.

Код:
#include <IE.au3>
#include <Excel.au3>

_IEErrorNotify(0)

Dim $sFileXls = @ScriptDir & "\images.xls"
Dim $sGooURL = "http://www.google.ru/imghp?hl=ru&tab=wi"

$oExcel = _ExcelBookOpen($sFileXls)

If @error = 1 Then
    MsgBox(16, "Error!", "Невозможно создать Excel объект!")
    Exit
ElseIf @error = 2 Then
    MsgBox(16, "Error!", "Файл не найден!")
    Exit
EndIf

$aFile = _ExcelReadSheetToArray($oExcel, 1, 1)
Dim $aResult[UBound($aFile)-1]

If WinExists("[CLASS:IEFrame]") Then
	WinActivate("[CLASS:IEFrame]")
	$hWin = WinGetHandle("[CLASS:IEFrame]")
	$oIE = _IEAttach($hWin, "HWND")
	_IENavigate($oIE, $sGooURL)
Else
	$oIE = _IECreate($sGooURL)
EndIf    

For $i = 1 To UBound($aFile)-1
	$sResult = _Submit($aFile[$i][1])
	$aResult[$i-1] = $sResult
Next

_ExcelWriteArray($oExcel, 1, 2, $aResult, 1)

MsgBox(0, "Success!", "Press OK to Save File and Exit")

_ExcelBookSave($oExcel)
_Exit()

Func _Submit($s_File)

	$o_Search = _IEGetObjById($oIE, "qbi")

	If @error Then
		MsgBox(16, "Failure!", "Version of Internet Explorer below the eighth!" & @CRLF & "Press OK to Exit")
		_Exit()
	EndIf

	_IEAction ($o_Search, "click")

	$o_Form = _IEGetObjById($oIE, 'qbf')
	$o_Input = _IEGetObjById($oIE, "qbui")
	_IEFormElementSetValue($o_Input, $s_File)
	_IEFormSubmit($o_Form)
	_IELoadWait($oIE)

	$s_Result = _IEGetObjById($oIE, "resultStats")
	Return _IEPropertyGet($s_Result, 'innerText')
EndFunc

Func _Exit()
	_ExcelBookClose($oExcel)
	_IEQuit($oIE)
	Exit
EndFunc
 
Автор
A

Alexaut

Новичок
Сообщения
23
Репутация
1
ФАНТАСТИКА! - Работает!!! :smile:)) - СПАСИБО! :smile:
 
Верх