Что нового

перенос информации со страницы в графы на другую

Hateful

Новичок
Сообщения
3
Репутация
0
интересует собственно данный вопрос.Прежде чем начать изучение AutoIt хотелось бы узнать возможно ли реализовать с помощью него следующий процесс автоматизации: например в одном окне дана характеристика машины(цена,модель,марка,пробег и т.д.),в другом окне форма с теми же характеристиками только незаполненными, можно ли с помощью нажатий пары клавиш как бы "скопипастить" информацию об автомобиле с первой страницы в графы на вторую?Ну или если не несколькими клавишами то уж куда быстрей чем ручками это все забивалось.Заранее спасибо и извините что побеспокоил.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Hateful [?]
можно ли с помощью нажатий пары клавиш как бы "скопипастить" информацию об автомобиле с первой страницы в графы на вторую?
С применением IE можно, иначе сложнее.
 
Автор
H

Hateful

Новичок
Сообщения
3
Репутация
0
http://www.autoebur.ru/view/id/3679 -например вот дано объявление о продаже автомобиля.Даны основные характеристики Марка,Год выпуска,Вид топлива,КПП,Привод,Объем двигателя,Мощность,Цвет,Пробег. У нас есть второй сайт где есть права администратора и надо как бы скопировать это объявление.Даны точно такие же графы с такими же характеристиками.То есть есть графа марка,привод и т.п.И вот чтоб ручками, так сказать, это все не копировать туда сюда,можно ли с помощью AutoIt автоматизировать данный процесс по средством нажатий пары клавиш к примеру?Как я вас понял- можно. Я думаю данную задачу уже кто то мог поставить,и есть какие то наработки,ведь процесс не так уж и сложен как мне кажется?


Добавлено:
Сообщение автоматически объединено:

С применением IE?Почему только с IE?И если с ним легче,то можете пояснить за счет чего пожалуйста.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Hateful [?]
И если с ним легче,то можете пояснить за счет чего пожалуйста.
Он позволяет работать с объектной моделью документа DOM, посредством объектной модели компонентов COM.
 
Автор
H

Hateful

Новичок
Сообщения
3
Репутация
0
извините за наглость,но можно показать на примере?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Hateful,
Пример:
Код:
#include <IE.au3>

$sText = ''
$sHTML = '<html>' & @CRLF & '<head>' & @CRLF & '<title>Test</title>' & @CRLF & '</head>' & _
		@CRLF & '<body>' & @CRLF
$sUrl = 'http://www.autoebur.ru/view/id/3679'
$sFile = @ScriptDir & '\test.html'

$oIE = _IECreate($sUrl)
If @error Then
	MsgBox(16, 'Error', '_IECreate')
	Exit
EndIf
$oTables = _IETableGetCollection($oIE)
If Not @error Then
	For $oTable In $oTables
		If $oTable.classname == 'model' Then
			$sText &= $oTable.innertext & @CRLF
			$sHTML &= $oTable.innerhtml
		EndIf
	Next
	If $sText Then
		MsgBox(64, 'Info', 'Text:' & @LF & $sText & @LF & '=======================' & @LF & _
				'HTML:' & @LF & $sHTML)
	Else
		MsgBox(16, 'Error', 'Error')
	EndIf
Else
	MsgBox(16, 'Error', '_IETableGetCollection')
EndIf
_IEQuit($oIE)
If $sText Then
	$sHTML &= @CRLF & '</body>' & @CRLF & '</html>'
	$hFile = FileOpen($sFile, 2)
	FileWrite($hFile, $sHTML)
	FileClose($hFile)
	ShellExecute($sFile)
EndIf

А так можно получить все ссылки на определенную модель:
Код:
#include <IE.au3>
#include <Array.au3>

$sUrl = 'http://www.autoebur.ru/'
$sSearch = 'bmw' ;модель, ссылки на которую ищем.
$iCountLink = 0
$iCountPage = 0
$iError = 1

$oIE = _IECreate($sUrl)
If @error Then
	MsgBox(16, 'Error', '_IECreate')
	Exit
EndIf
For $i = 1 To 1
	$oLinks = _IELinkGetCollection($oIE)
	If @error Then ExitLoop
	For $oLink In $oLinks
		If StringInStr($oLink.innertext, $sSearch) = 1 Then
			_IENavigate($oIE, $oLink.href)
			If @error Then ExitLoop 2
			ExitLoop
		EndIf
	Next
	$oPages = _IETagNameGetCollection($oIE, 'div')
	If @error Then ExitLoop
	Dim $aPages[@extended]
	For $oPage In $oPages
		If $oPage.classname == 'nav' Then
			$oTags = _IETagNameGetCollection($oPage, 'a')
			If @error Then ExitLoop 2
			For $oTag In $oTags
				If StringInStr($oTag.href, 'offset') Then
					$iCountPage += 1
					$aPages[$iCountPage] = $oTag.href
				EndIf
			Next
		EndIf
	Next
	If $iCountPage Then
		ReDim $aPages[$iCountPage + 1]
		$aPages = _ArrayUnique($aPages, 1, 1)
	EndIf
	$oLinks = _IELinkGetCollection($oIE)
	If @error Then ExitLoop
	Dim $aLinks[@extended][2]
	For $oLink In $oLinks
		If StringInStr($oLink.href, 'view/id') And StringInStr($oLink.innertext, $sSearch) Then
			$iCountLink += 1
			$aLinks[$iCountLink][0] = $oLink.innertext
			$aLinks[$iCountLink][1] = $oLink.href
		EndIf
	Next
	$aLinks[0][0] = $iCountLink
	If $iCountPage Then
		For $i = 1 To $aPages[0]
			_IENavigate($oIE, $aPages[$i])
			If @error Then ExitLoop 2
			$oLinks = _IELinkGetCollection($oIE)
			If @error Then ExitLoop 2
			ReDim $aLinks[$aLinks[0][0] + @extended + 1][2]
			For $oLink In $oLinks
				If StringInStr($oLink.href, 'view/id') And StringInStr($oLink.innertext, $sSearch) Then
					$iCountLink += 1
					$aLinks[$iCountLink][0] = $oLink.innertext
					$aLinks[$iCountLink][1] = $oLink.href
				EndIf
			Next
			$aLinks[0][0] = $iCountLink
		Next
	EndIf
	$iError = 0
Next
_IEQuit($oIE)
If $iError Then
	MsgBox(16, 'Error', 'Error')
Else
	If $iCountLink Then
		ReDim $aLinks[$iCountLink + 1][2]
		$aLinks[0][0] = $iCountLink
		_ArrayDisplay($aLinks)
	EndIf
EndIf


PS
ИМХО, через InetRead() будет быстрее.
Например, так можно получить все ссылки на страницы моделей:
Код:
#include <Array.au3>

$sUrl = 'http://www.autoebur.ru'

$sSourse = InetRead($sUrl & '/', 17)
If @error Then
	MsgBox(16, 'Error', 'InetRead')
	Exit
EndIf
$sSourse = BinaryToString($sSourse)
$aTemp = StringRegExp($sSourse, '<span><a href="(/findcars.*?)</a>', 3)
If @error Then
	MsgBox(16, 'Error', 'StringRegExp')
	Exit
EndIf
Dim $aLinks[UBound($aTemp) + 1][2] = [[UBound($aTemp)]]
For $i = 1 To $aLinks[0][0]
	$aLinks[$i][0] = StringRegExpReplace($aTemp[$i - 1], '^.*>', '')
	$aLinks[$i][1] = $sUrl & StringRegExpReplace($aTemp[$i - 1], '".*$', '')
Next
_ArrayDisplay($aLinks)
 
Верх