Что нового

[Автоматизация] Считывание номмеров с интернет страницы

Dk

Новичок
Сообщения
358
Репутация
2
Версия AutoIt: 3.

Программа должна считывать ISBN-номера вот отсюда
https://www.thieme.de/shop/search?q=:relevance&show=Page50&contributor=&subject= и записывать в текстовой файл.
Сложность в том, чтобы не только записывал ISBN номера, но и переходил на другую страничку, так как на первой видно только 50 ISBN

Примечания:
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
А ты перейди на следующую страницу и выложи сюда ссылку этой следующей страницы.
 

mef-t

Осваивающий
Сообщения
306
Репутация
30
В строке адреса достаточно добавить "&page=X", где X - это номер страницы минус 1.
От сюда вывод, сложности нет, достаточно получить количество страниц и запустить анализ в цикле.
Или даже не определять кол-во страниц, как только очередная страница не вернет нужно результата, т.е. товаров не будет на странице, то и прекращать цикл.
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Dk
Номера-то нужны все или только бумажных книг?
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Dk
Кривой сайт. Я так и не нашел как получить последнюю страницу. Укажешь сам.
Да и отображается там товаров не 50, а иногда меньше.

Код:
#Include <Array.au3>

Local $_sUrl = 'https://www.thieme.de/shop/search?q=:relevance&page=%PAGE%&show=Page50&contributor=&subject='
Local $_iStart = 0 ; - Первая страница
Local $_iEnd = 99 ; - Последняя страница

Local $_sPage, $_aRegExp, $_aISBN[1]
For $Idx = $_iStart To $_iEnd Step 1
	$_sPage = _AF_Navigate( StringReplace( $_sUrl, '%PAGE%', $Idx ))
	$_aRegExp = StringRegExp( $_sPage, '([0-9]{13})_cover_s\.jpg', 3)
	For $Idx2 = 0 To UBound( $_aRegExp ) - 1 Step 1
		_ArrayAdd( $_aISBN, $_aRegExp[ $Idx2 ] )
	Next
Next
_ArrayDisplay( $_aISBN )

Local $_sText = _ArrayToString( $_aISBN, @CRLF, 1 )
ClipPut( $_sText ) ;В буфере обмена


Func _AF_Navigate($_sURL)
	Local $Temp, $Temp2, $I
	Local $Win1251[6] = [5,"ґ","µ","ђ","„","ћ"]

	$Temp = InetRead($_sURL,2)
	If @error Then
		Return SetError(@Error, 0, 0)
	EndIf

	$Temp2 = BinaryToString($Temp)
	For $I = 1 To $Win1251[0] Step 1
		If StringInStr($Temp2,$Win1251[$I]) Then _
			Return BinaryToString($Temp, 4)
	Next
	Return $Temp2
EndFunc




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

mef-t [?]
Или даже не определять кол-во страниц, как только очередная страница не вернет нужно результата, т.е. товаров не будет на странице, то и прекращать цикл.

Код:
#Include <Array.au3>

Local $_sUrl = 'https://www.thieme.de/shop/search?q=:relevance&page=%PAGE%&show=Page50&contributor=&subject='
Local $_iStart = 0 ; - Первая страница

Local $_sPage, $_aRegExp, $_aISBN[1]
Local $Idx = $_iStart
While 1
	$_sPage = _AF_Navigate( StringReplace( $_sUrl, '%PAGE%', $Idx ))
	$_aRegExp = StringRegExp( $_sPage, '([0-9]{13})_cover_s\.jpg', 3)
	If Not IsArray($_aRegExp) Then _
    		ExitLoop

	For $Idx2 = 0 To UBound( $_aRegExp ) - 1 Step 1
		_ArrayAdd( $_aISBN, $_aRegExp[ $Idx2 ] )
	Next
	$Idx += 1
WEnd
_ArrayDisplay( $_aISBN )

Local $_sText = _ArrayToString( $_aISBN, @CRLF, 1 )
ClipPut( $_sText ) ;В буфере обмена


Func _AF_Navigate($_sURL)
	Local $Temp, $Temp2, $I
	Local $Win1251[6] = [5,"ґ","µ","ђ","„","ћ"]

	$Temp = InetRead($_sURL,2)
	If @error Then
		Return SetError(@Error, 0, 0)
	EndIf

	$Temp2 = BinaryToString($Temp)
	For $I = 1 To $Win1251[0] Step 1
		If StringInStr($Temp2,$Win1251[$I]) Then _
			Return BinaryToString($Temp, 4)
	Next
	Return $Temp2
EndFunc
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
всё работает.

Теперь нужно, что-бы следующая программа, вставляла эти номера в поисковик
здесь http://www.amazon.de потом происходило движении мышки, нажатие левой кнопки, потом опять движение и нажатие левой кнопки.
Координаты я укажу потом сам.
В общем
1)Вставка с файла в поисковик
2)Движение, Нажатие
3)Движение, Нажатие
в цикле, пока не закончатся номера. :whistle: :-[
Происходить это должно в режиме IE
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Dk

Dk [?]
2)Движение, Нажатие
Лучше сразу скажи куда именно. Быть может можно обойтись и без нажатий.
К примеру поиск можно запустить так:
Код:
http://www.amazon.de/s/ref=nb_sb_noss/277-4817376-8715619?__mk_de_DE=%C3%85M%C3%85Z%C3%95%C3%91&url=search-alias%3Daps&field-keywords=%ISBN%

А ссылки, на которые ты планируешь перейти, проще достать из html.
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Нажимать нужно на Плугигин от амазона, он установлен на ИЕ. Поетому конкретно я не могу дать ссылки.... точнее говоря могу зайти в настройки... но после нажатия, появляется ещё одно мини Окно, на которое тоже нужно нажать.....
В общем будет проще, если сделать именно нажатием мыши (визуально через ИЕ)


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

firex

Программа работает некорректно, считывает только первую станицу и повторяет её так много раз (записывает повторно)
 
Верх