Что нового

Перебор на ebay и выдёргивание ISBN

Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Проглядел вопрос.
на ааа.де можно и по первому и по второму исбн искать.


Не работает всё равно. доходит до 4 страници у пишет ошибку.

45) : ==> Subscript used with non-Array variable.:
$Items[$i][3]=$aLinksRaw[0]
$Items[$i][3]=$aLinksRaw^ ERROR
>Exit code: 1 Time: 9.429


я проверил лично сам первые 20 ISBN, там везде есть цена "Gebraucht".
Единственное меня насторожыл первый ISBN, там полностъю отсутствует цена на новые книги

https://www.amazon.de/s/ref=nb_sb_noss?__mk_de_DE=%C3%85M%C3%85Z%C3%95%C3%91&url=search-alias%3Daps&field-keywords=3403022056&rh=i%3Aaps%2Ck%3A3403022056&ajr=6

но если учитывать то что он переберает с верху в низ а етот номер самый первый, то он его вроде нормално читает - проходит, а остоновлявается на переборе толе 3 или 4; 5

я прикреплю ISBN.ini ISBN.txt, item.txt с которыми я работаю, что б, наглядней было, а то списки у нас разные.

ISBN.ini к сожалению отправить нельзя
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Хм... :scratch: Пока не получилось корректно без зависания сделать обработку ISBN-13, сделал фильтр который в отдельный массив убирает номера ISBN-13, но оставшиеся ISBN-10 обрабатывает нормально.

Код:
#include <array.au3>
    #include <IE.au3>
    $Fname="Item.txt"    
    $Fname2="ISBN.txt"  
    $Fname3="ISBN.ini"  
    $Fname4="item-ISBN-Preis.txt" ; Конечный файл.
    $timer=TimerInit()
   
    $i=1
    $k=1
    $maxItems2=4
    dim $items[1][4],$_items[1][2],$items1[1][4]
    While 1
        toolTip("Строчка = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
        If IniRead($Fname3, "", "$IBSN" & $i & "-" & 1, "")<>"" then
        redim $items[$k+1][$maxItems2]
        $items[$k][0] = IniRead($Fname3, "", "$Item" & $i,"")
        For $j=1 to $maxItems2 -1
        If $items[$k][0]=$items[$k-1][0] Then
        $k-=1
        exitloop
        EndIf
        ReDim $items[$k+1][$maxItems2]
        $items[$k][$j] = IniRead($Fname3, "", "$IBSN" & $i & "-" & $j,"")
        If IniRead($Fname3, "", "$IBSN" & $i & "-" & $maxitems2+1, "")<>"" Then $maxItems2+=1
        next
        $k+=1
        EndIf
        $i+=1
        If IniRead($Fname3, "", "$Item" & $i,0)="exit" then exitloop
		WEnd
		$k=1
		For $i=1 to UBound($items)-1
		If StringRegExp($items[$i][1], '[\d]{4}')=1 Then
		If StringRegExp($items[$i][1], '[\d]{13}')=1 then
			If StringRegExp($items[$i][2], '[\d]{10}')=1 then
 			$temp=$items[$i][2]
			$items[$i][2]=$items[$i][1]
			$items[$i][1]=$temp
		Else
			ReDim $_items[$k+1][2]
			$_items[$k][0]=$items[$i][0]
			$_items[$k][1]=$items[$i][1]
			$items[$i][1]="error"
			$k+=1
			EndIf
		elseIf StringRegExp($items[$i][1], '[\d]{10}')=1 Then
		Else
			$items[$i][1]="error"
		EndIf
		EndIf
		Next

		
    $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
    $k=0
    $i=0
    $timer=TimerInit()
    Dim $aLinks[1]
    For $i=1 to UBound($Items)-1
	If $items[$i][1]="error" then ContinueLoop
    $WinUrl ='http://www.amazon.de/gp/offer-listing/' & $Items[$i][1] & '/ref=sr_1_1_olp?ie=UTF8&qid=' & $Items[$i][1] & '&sr=8-1&condition=used'
     $oHTTP.Open('GET', $WinUrl & $i, False)
     $oHTTP.Send('')
     $oHTTP.WaitForResponse
     $sHTML = $oHTTP.ResponseText
	$aLinksRaw = StringRegExp($sHTML,'(?si)class="price">EUR[\s](.+?)</a>', 3)
	$k+=1
	ReDim $items1[$k+1][4]
	$items1[$k][0]=$items[$i][0]
	$items1[$k][1]=$items[$i][1]
	$items1[$k][2]=$items[$i][2]
	$Items1[$k][3]=$aLinksRaw[0]
    toolTip("Страница = " & $i & " из " & UBound($Items)-1 & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
    Next

 

    ;      Сохранение в txt
    FileOpen($Fname4, 2)
    For $i=1 to UBound($Items1)-1
        toolTip("Запись в txt = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
        FileWriteLine($Fname4, "Item: " & $Items1[$i][0] & "    ISBN-10: " & $Items1[$i][1] & "    ISBN-13: " & $Items1[$i][2] & "   Price: " & $Items1[$i][3] & " EUR")
    Next
    FileClose($Fname4)
   

Func _Exit()
    _IEQuit($oIE)
    Exit
EndFunc   ;==>_Exit
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
zlo-kazan сказал(а):
Хм... :scratch: Пока не получилось корректно без зависания сделать обработку ISBN-13, сделал фильтр который в отдельный массив убирает номера ISBN-13, но оставшиеся ISBN-10 обрабатывает нормально.

Код:
#include <array.au3>
    #include <IE.au3>
    $Fname="Item.txt"    
    $Fname2="ISBN.txt"  
    $Fname3="ISBN.ini"  
    $Fname4="item-ISBN-Preis.txt" ; Конечный файл.
    $timer=TimerInit()
   
    $i=1
    $k=1
    $maxItems2=4
    dim $items[1][4],$_items[1][2],$items1[1][4]
    While 1
        toolTip("Строчка = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
        If IniRead($Fname3, "", "$IBSN" & $i & "-" & 1, "")<>"" then
        redim $items[$k+1][$maxItems2]
        $items[$k][0] = IniRead($Fname3, "", "$Item" & $i,"")
        For $j=1 to $maxItems2 -1
        If $items[$k][0]=$items[$k-1][0] Then
        $k-=1
        exitloop
        EndIf
        ReDim $items[$k+1][$maxItems2]
        $items[$k][$j] = IniRead($Fname3, "", "$IBSN" & $i & "-" & $j,"")
        If IniRead($Fname3, "", "$IBSN" & $i & "-" & $maxitems2+1, "")<>"" Then $maxItems2+=1
        next
        $k+=1
        EndIf
        $i+=1
        If IniRead($Fname3, "", "$Item" & $i,0)="exit" then exitloop
		WEnd
		$k=1
		For $i=1 to UBound($items)-1
		If StringRegExp($items[$i][1], '[\d]{4}')=1 Then
		If StringRegExp($items[$i][1], '[\d]{13}')=1 then
			If StringRegExp($items[$i][2], '[\d]{10}')=1 then
 			$temp=$items[$i][2]
			$items[$i][2]=$items[$i][1]
			$items[$i][1]=$temp
		Else
			ReDim $_items[$k+1][2]
			$_items[$k][0]=$items[$i][0]
			$_items[$k][1]=$items[$i][1]
			$items[$i][1]="error"
			$k+=1
			EndIf
		elseIf StringRegExp($items[$i][1], '[\d]{10}')=1 Then
		Else
			$items[$i][1]="error"
		EndIf
		EndIf
		Next

		
    $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
    $k=0
    $i=0
    $timer=TimerInit()
    Dim $aLinks[1]
    For $i=1 to UBound($Items)-1
	If $items[$i][1]="error" then ContinueLoop
    $WinUrl ='http://www.amazon.de/gp/offer-listing/' & $Items[$i][1] & '/ref=sr_1_1_olp?ie=UTF8&qid=' & $Items[$i][1] & '&sr=8-1&condition=used'
     $oHTTP.Open('GET', $WinUrl & $i, False)
     $oHTTP.Send('')
     $oHTTP.WaitForResponse
     $sHTML = $oHTTP.ResponseText
	$aLinksRaw = StringRegExp($sHTML,'(?si)class="price">EUR[\s](.+?)</a>', 3)
	$k+=1
	ReDim $items1[$k+1][4]
	$items1[$k][0]=$items[$i][0]
	$items1[$k][1]=$items[$i][1]
	$items1[$k][2]=$items[$i][2]
	$Items1[$k][3]=$aLinksRaw[0]
    toolTip("Страница = " & $i & " из " & UBound($Items)-1 & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
    Next

 

    ;      Сохранение в txt
    FileOpen($Fname4, 2)
    For $i=1 to UBound($Items1)-1
        toolTip("Запись в txt = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
        FileWriteLine($Fname4, "Item: " & $Items1[$i][0] & "    ISBN-10: " & $Items1[$i][1] & "    ISBN-13: " & $Items1[$i][2] & "   Price: " & $Items1[$i][3] & " EUR")
    Next
    FileClose($Fname4)
   

Func _Exit()
    _IEQuit($oIE)
    Exit
EndFunc   ;==>_Exit

Почему то он не останавливается, такое ощущение что он не читает лист с ИСБН, а сам всё подрят молотит.
И скорасть насторажывает, очень быстро 400тыс за 600 секунд, обычно за ето время где то 500 должно быть.
Листа, который он должен создат в конце, я так и не дождался, пока писал ето сообшение дошёл уже где то до 500 тыс. :shok:
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
;D
Если идет так быстро, то это счетчик считывания из ini-файла.
Конец ini файла в таком формате?
[box title=ini]$Item417=220767633499
$Item418=140533899841
$Item420=exit[/box]
Добавил ограничение на 10000 страниц. :smile:
Код:
#include <array.au3>
    #include <IE.au3>
    $Fname="Item.txt"    
    $Fname2="ISBN.txt"  
    $Fname3="ISBN.ini"  
    $Fname4="item-ISBN-Preis.txt" ; Конечный файл.
    $timer=TimerInit()
   
    $i=1
    $k=1
    $maxItems2=4
    dim $items[1][4],$_items[1][2],$items1[1][4]
    While 1
        toolTip("Строчка = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
        If IniRead($Fname3, "", "$IBSN" & $i & "-" & 1, "")<>"" then
        redim $items[$k+1][$maxItems2]
        $items[$k][0] = IniRead($Fname3, "", "$Item" & $i,"")
        For $j=1 to $maxItems2 -1
        If $items[$k][0]=$items[$k-1][0] Then
        $k-=1
        exitloop
        EndIf
        ReDim $items[$k+1][$maxItems2]
        $items[$k][$j] = IniRead($Fname3, "", "$IBSN" & $i & "-" & $j,"")
        If IniRead($Fname3, "", "$IBSN" & $i & "-" & $maxitems2+1, "")<>"" Then $maxItems2+=1
        next
        $k+=1
        EndIf
        $i+=1
        If IniRead($Fname3, "", "$Item" & $i,0)="exit" then exitloop
		If $i>10000 then exitloop
	WEnd
		$k=1
		For $i=1 to UBound($items)-1
		If StringRegExp($items[$i][1], '[\d]{4}')=1 Then
		If StringRegExp($items[$i][1], '[\d]{13}')=1 then
			If StringRegExp($items[$i][2], '[\d]{10}')=1 then
 			$temp=$items[$i][2]
			$items[$i][2]=$items[$i][1]
			$items[$i][1]=$temp
		Else
			ReDim $_items[$k+1][2]
			$_items[$k][0]=$items[$i][0]
			$_items[$k][1]=$items[$i][1]
			$items[$i][1]="error"
			$k+=1
			EndIf
		elseIf StringRegExp($items[$i][1], '[\d]{10}')=1 Then
		Else
			$items[$i][1]="error"
		EndIf
		EndIf
		Next

		
    $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
    $k=0
    $i=0
    $timer=TimerInit()
    Dim $aLinks[1]
    For $i=1 to UBound($Items)-1
	If $items[$i][1]="error" then ContinueLoop
    $WinUrl ='http://www.amazon.de/gp/offer-listing/' & $Items[$i][1] & '/ref=sr_1_1_olp?ie=UTF8&qid=' & $Items[$i][1] & '&sr=8-1&condition=used'
     $oHTTP.Open('GET', $WinUrl & $i, False)
     $oHTTP.Send('')
     $oHTTP.WaitForResponse
     $sHTML = $oHTTP.ResponseText
	$aLinksRaw = StringRegExp($sHTML,'(?si)class="price">EUR[\s](.+?)</a>', 3)
	$k+=1
	ReDim $items1[$k+1][4]
	$items1[$k][0]=$items[$i][0]
	$items1[$k][1]=$items[$i][1]
	$items1[$k][2]=$items[$i][2]
	$Items1[$k][3]=$aLinksRaw[0]
    toolTip("Страница = " & $i & " из " & UBound($Items)-1 & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
    Next

 

    ;      Сохранение в txt
    FileOpen($Fname4, 2)
    For $i=1 to UBound($Items1)-1
        toolTip("Запись в txt = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
        FileWriteLine($Fname4, "Item: " & $Items1[$i][0] & "    ISBN-10: " & $Items1[$i][1] & "    ISBN-13: " & $Items1[$i][2] & "   Price: " & $Items1[$i][3] & " EUR")
    Next
    FileClose($Fname4)
   

Func _Exit()
    _IEQuit($oIE)
    Exit
EndFunc   ;==>_Exit
 
Автор
D

Dk

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

Единственнаа просьба, можно сделать так что бы каждй отчёт был ровно в столбик, иногда смешанно, мне нужно ето для того что бы грамматно в Ехцел потом сделать.

А выходит пока вот так

Item: 260768586176 ISBN-10: 3451302047 ISBN-13: 9783451302046 Price: 6,40 EUR
Item: 310310797667 ISBN-10: 3834917109 ISBN-13: 9783834917102 Price: 35,00 EUR
Item: 150589889348 ISBN-10: 3404616138 ISBN-13: 9783404616138 Price: 3,20 EUR
Item: 150589889373 ISBN-10: 3867390061 ISBN-13: 9783867390064 Price: 7,95 EUR
Item: 270733846121 ISBN-10: 3486299018 ISBN-13: Price: 22,00 EUR
Item: 370500662234 ISBN-10: 0273646451 ISBN-13: 9780273646457 Price: 4,75 EUR
Item: 290554720855 ISBN-10: 3411046023 ISBN-13: 9783411046027 Price: 3,50 EUR
Item: 310310799635 ISBN-10: 3636062654 ISBN-13: 9783636062659 Price: 29,95 EUR
Item: 110673300174 ISBN-10: 3423050063 ISBN-13: 9783423050067 Price: 2,98 EUR


Если нет ИСБН 13 то программа смещает цену в лево.
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Меняет пустой ISBN-13 на 13 пробелов... :smile: Теперь ровнее.. :smile:
Код:
#include <array.au3>
    #include <IE.au3>
    $Fname="Item.txt"    
    $Fname2="ISBN.txt"  
    $Fname3="ISBN.ini"  
    $Fname4="item-ISBN-Preis.txt" ; Конечный файл.
    $timer=TimerInit()
   
    $i=1
    $k=1
    $maxItems2=4
    dim $items[1][4],$_items[1][2],$items1[1][4]
    While 1
        toolTip("Строчка = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
        If IniRead($Fname3, "", "$IBSN" & $i & "-" & 1, "")<>"" then
        redim $items[$k+1][$maxItems2]
        $items[$k][0] = IniRead($Fname3, "", "$Item" & $i,"")
        For $j=1 to $maxItems2 -1
        If $items[$k][0]=$items[$k-1][0] Then
        $k-=1
        exitloop
        EndIf
        ReDim $items[$k+1][$maxItems2]
        $items[$k][$j] = IniRead($Fname3, "", "$IBSN" & $i & "-" & $j,"")
        If IniRead($Fname3, "", "$IBSN" & $i & "-" & $maxitems2+1, "")<>"" Then $maxItems2+=1
        next
        $k+=1
        EndIf
        $i+=1
        If IniRead($Fname3, "", "$Item" & $i,0)="exit" then exitloop
		If $i>10000 then exitloop
	WEnd
		$k=1
		For $i=1 to UBound($items)-1
		If StringRegExp($items[$i][1], '[\d]{4}')=1 Then
		If StringRegExp($items[$i][1], '[\d]{13}')=1 then
			If StringRegExp($items[$i][2], '[\d]{10}')=1 then
				$temp=$items[$i][2]
				$items[$i][2]=$items[$i][1]
				$items[$i][1]=$temp
			Else
				ReDim $_items[$k+1][2]
				$_items[$k][0]=$items[$i][0]
				$_items[$k][1]=$items[$i][1]
				$items[$i][1]="error"
			$k+=1
			EndIf
		elseIf StringRegExp($items[$i][1], '[\d]{10}')=1 Then
		If StringRegExp($items[$i][2], '[\d]{13}')=0 Then
			$Items[$i][2]="             "
		EndIf
		Else
			$items[$i][1]="error"
		EndIf
		EndIf
		Next

		
    $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
    $k=0
    $i=0
    $timer=TimerInit()
    Dim $aLinks[1]
    For $i=1 to UBound($Items)-1
	If $items[$i][1]="error" then ContinueLoop
    $WinUrl ='http://www.amazon.de/gp/offer-listing/' & $Items[$i][1] & '/ref=sr_1_1_olp?ie=UTF8&qid=' & $Items[$i][1] & '&sr=8-1&condition=used'
     $oHTTP.Open('GET', $WinUrl & $i, False)
     $oHTTP.Send('')
     $oHTTP.WaitForResponse
     $sHTML = $oHTTP.ResponseText
	$aLinksRaw = StringRegExp($sHTML,'(?si)class="price">EUR[\s](.+?)</a>', 3)
	$k+=1
	ReDim $items1[$k+1][4]
	$items1[$k][0]=$items[$i][0]
	$items1[$k][1]=$items[$i][1]
	$items1[$k][2]=$items[$i][2]
	$Items1[$k][3]=$aLinksRaw[0]
    toolTip("Страница = " & $i & " из " & UBound($Items)-1 & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
    Next

 

    ;      Сохранение в txt
    FileOpen($Fname4, 2)
    For $i=1 to UBound($Items1)-1
        toolTip("Запись в txt = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
		If $Items1[$i][2]="" then $Items1[$i][2]="             "
        FileWriteLine($Fname4, "Item: " & $Items1[$i][0] & "    ISBN-10: " & $Items1[$i][1] & "    ISBN-13: " & $Items1[$i][2] & "   Price: " & $Items1[$i][3] & " EUR")
	Next
    FileClose($Fname4)
   

Func _Exit()
    _IEQuit($oIE)
    Exit
EndFunc   ;==>_Exit

[box title=пример]
Item: 150589889348 ISBN-10: 3404616138 ISBN-13: 9783404616138 Price: 3,20 EUR
Item: 150589889373 ISBN-10: 3867390061 ISBN-13: 9783867390064 Price: 7,95 EUR
Item: 270733846121 ISBN-10: 3486299018 ISBN-13: Price: 22,00 EUR
Item: 370500662234 ISBN-10: 0273646451 ISBN-13: 9780273646457 Price: 4,75 EUR
[/box]
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
zlo-kazan сказал(а):
Меняет пустой ISBN-13 на 13 пробелов... :smile: Теперь ровнее.. :smile:
Код:
#include <array.au3>
    #include <IE.au3>
    $Fname="Item.txt"    
    $Fname2="ISBN.txt"  
    $Fname3="ISBN.ini"  
    $Fname4="item-ISBN-Preis.txt" ; Конечный файл.
    $timer=TimerInit()
   
    $i=1
    $k=1
    $maxItems2=4
    dim $items[1][4],$_items[1][2],$items1[1][4]
    While 1
        toolTip("Строчка = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
        If IniRead($Fname3, "", "$IBSN" & $i & "-" & 1, "")<>"" then
        redim $items[$k+1][$maxItems2]
        $items[$k][0] = IniRead($Fname3, "", "$Item" & $i,"")
        For $j=1 to $maxItems2 -1
        If $items[$k][0]=$items[$k-1][0] Then
        $k-=1
        exitloop
        EndIf
        ReDim $items[$k+1][$maxItems2]
        $items[$k][$j] = IniRead($Fname3, "", "$IBSN" & $i & "-" & $j,"")
        If IniRead($Fname3, "", "$IBSN" & $i & "-" & $maxitems2+1, "")<>"" Then $maxItems2+=1
        next
        $k+=1
        EndIf
        $i+=1
        If IniRead($Fname3, "", "$Item" & $i,0)="exit" then exitloop
		If $i>10000 then exitloop
	WEnd
		$k=1
		For $i=1 to UBound($items)-1
		If StringRegExp($items[$i][1], '[\d]{4}')=1 Then
		If StringRegExp($items[$i][1], '[\d]{13}')=1 then
			If StringRegExp($items[$i][2], '[\d]{10}')=1 then
				$temp=$items[$i][2]
				$items[$i][2]=$items[$i][1]
				$items[$i][1]=$temp
			Else
				ReDim $_items[$k+1][2]
				$_items[$k][0]=$items[$i][0]
				$_items[$k][1]=$items[$i][1]
				$items[$i][1]="error"
			$k+=1
			EndIf
		elseIf StringRegExp($items[$i][1], '[\d]{10}')=1 Then
		If StringRegExp($items[$i][2], '[\d]{13}')=0 Then
			$Items[$i][2]="             "
		EndIf
		Else
			$items[$i][1]="error"
		EndIf
		EndIf
		Next

		
    $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
    $k=0
    $i=0
    $timer=TimerInit()
    Dim $aLinks[1]
    For $i=1 to UBound($Items)-1
	If $items[$i][1]="error" then ContinueLoop
    $WinUrl ='http://www.amazon.de/gp/offer-listing/' & $Items[$i][1] & '/ref=sr_1_1_olp?ie=UTF8&qid=' & $Items[$i][1] & '&sr=8-1&condition=used'
     $oHTTP.Open('GET', $WinUrl & $i, False)
     $oHTTP.Send('')
     $oHTTP.WaitForResponse
     $sHTML = $oHTTP.ResponseText
	$aLinksRaw = StringRegExp($sHTML,'(?si)class="price">EUR[\s](.+?)</a>', 3)
	$k+=1
	ReDim $items1[$k+1][4]
	$items1[$k][0]=$items[$i][0]
	$items1[$k][1]=$items[$i][1]
	$items1[$k][2]=$items[$i][2]
	$Items1[$k][3]=$aLinksRaw[0]
    toolTip("Страница = " & $i & " из " & UBound($Items)-1 & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
    Next

 

    ;      Сохранение в txt
    FileOpen($Fname4, 2)
    For $i=1 to UBound($Items1)-1
        toolTip("Запись в txt = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
		If $Items1[$i][2]="" then $Items1[$i][2]="             "
        FileWriteLine($Fname4, "Item: " & $Items1[$i][0] & "    ISBN-10: " & $Items1[$i][1] & "    ISBN-13: " & $Items1[$i][2] & "   Price: " & $Items1[$i][3] & " EUR")
	Next
    FileClose($Fname4)
   

Func _Exit()
    _IEQuit($oIE)
    Exit
EndFunc   ;==>_Exit

[box title=пример]
Item: 150589889348 ISBN-10: 3404616138 ISBN-13: 9783404616138 Price: 3,20 EUR
Item: 150589889373 ISBN-10: 3867390061 ISBN-13: 9783867390064 Price: 7,95 EUR
Item: 270733846121 ISBN-10: 3486299018 ISBN-13: Price: 22,00 EUR
Item: 370500662234 ISBN-10: 0273646451 ISBN-13: 9780273646457 Price: 4,75 EUR
[/box]



ГЕНИАЛьНО :ok: :ok: :ok: :ok: :ok: :ok:, ограмное спасибо. Честно говоря первый раз наткнулся на такую помощ в Инете, а инет у меня уже 10 лет, во как ))))
Тему пока закрыват не буду. Скоро командировка итд. и пока буду работат
с етими програмами уже по ходу дела может будут вопросы - прозьбы.
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
zlo-kazan сказал(а):
Меняет пустой ISBN-13 на 13 пробелов... :smile: Теперь ровнее.. :smile:
Код:
#include <array.au3>
    #include <IE.au3>
    $Fname="Item.txt"    
    $Fname2="ISBN.txt"  
    $Fname3="ISBN.ini"  
    $Fname4="item-ISBN-Preis.txt" ; Конечный файл.
    $timer=TimerInit()
   
    $i=1
    $k=1
    $maxItems2=4
    dim $items[1][4],$_items[1][2],$items1[1][4]
    While 1
        toolTip("Строчка = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
        If IniRead($Fname3, "", "$IBSN" & $i & "-" & 1, "")<>"" then
        redim $items[$k+1][$maxItems2]
        $items[$k][0] = IniRead($Fname3, "", "$Item" & $i,"")
        For $j=1 to $maxItems2 -1
        If $items[$k][0]=$items[$k-1][0] Then
        $k-=1
        exitloop
        EndIf
        ReDim $items[$k+1][$maxItems2]
        $items[$k][$j] = IniRead($Fname3, "", "$IBSN" & $i & "-" & $j,"")
        If IniRead($Fname3, "", "$IBSN" & $i & "-" & $maxitems2+1, "")<>"" Then $maxItems2+=1
        next
        $k+=1
        EndIf
        $i+=1
        If IniRead($Fname3, "", "$Item" & $i,0)="exit" then exitloop
		If $i>10000 then exitloop
	WEnd
		$k=1
		For $i=1 to UBound($items)-1
		If StringRegExp($items[$i][1], '[\d]{4}')=1 Then
		If StringRegExp($items[$i][1], '[\d]{13}')=1 then
			If StringRegExp($items[$i][2], '[\d]{10}')=1 then
				$temp=$items[$i][2]
				$items[$i][2]=$items[$i][1]
				$items[$i][1]=$temp
			Else
				ReDim $_items[$k+1][2]
				$_items[$k][0]=$items[$i][0]
				$_items[$k][1]=$items[$i][1]
				$items[$i][1]="error"
			$k+=1
			EndIf
		elseIf StringRegExp($items[$i][1], '[\d]{10}')=1 Then
		If StringRegExp($items[$i][2], '[\d]{13}')=0 Then
			$Items[$i][2]="             "
		EndIf
		Else
			$items[$i][1]="error"
		EndIf
		EndIf
		Next

		
    $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
    $k=0
    $i=0
    $timer=TimerInit()
    Dim $aLinks[1]
    For $i=1 to UBound($Items)-1
	If $items[$i][1]="error" then ContinueLoop
    $WinUrl ='http://www.amazon.de/gp/offer-listing/' & $Items[$i][1] & '/ref=sr_1_1_olp?ie=UTF8&qid=' & $Items[$i][1] & '&sr=8-1&condition=used'
     $oHTTP.Open('GET', $WinUrl & $i, False)
     $oHTTP.Send('')
     $oHTTP.WaitForResponse
     $sHTML = $oHTTP.ResponseText
	$aLinksRaw = StringRegExp($sHTML,'(?si)class="price">EUR[\s](.+?)</a>', 3)
	$k+=1
	ReDim $items1[$k+1][4]
	$items1[$k][0]=$items[$i][0]
	$items1[$k][1]=$items[$i][1]
	$items1[$k][2]=$items[$i][2]
	$Items1[$k][3]=$aLinksRaw[0]
    toolTip("Страница = " & $i & " из " & UBound($Items)-1 & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
    Next

 

    ;      Сохранение в txt
    FileOpen($Fname4, 2)
    For $i=1 to UBound($Items1)-1
        toolTip("Запись в txt = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
		If $Items1[$i][2]="" then $Items1[$i][2]="             "
        FileWriteLine($Fname4, "Item: " & $Items1[$i][0] & "    ISBN-10: " & $Items1[$i][1] & "    ISBN-13: " & $Items1[$i][2] & "   Price: " & $Items1[$i][3] & " EUR")
	Next
    FileClose($Fname4)
   

Func _Exit()
    _IEQuit($oIE)
    Exit
EndFunc   ;==>_Exit

[box title=пример]
Item: 150589889348 ISBN-10: 3404616138 ISBN-13: 9783404616138 Price: 3,20 EUR
Item: 150589889373 ISBN-10: 3867390061 ISBN-13: 9783867390064 Price: 7,95 EUR
Item: 270733846121 ISBN-10: 3486299018 ISBN-13: Price: 22,00 EUR
Item: 370500662234 ISBN-10: 0273646451 ISBN-13: 9780273646457 Price: 4,75 EUR
[/box]




Нашёл первую проблемку в третей программе
Выдаёт ошибку

(77) : ==> Subscript used with non-Array variable.:
$Items1[$k][3]=$aLinksRaw[0]
$Items1[$k][3]=$aLinksRaw^ ERROR
>Exit code: 1 Time: 167.831

Смысл в том что, если вообше нет никакой цены - нет товара на данный момемт в продаже na www.amazon.de , ни нового ни старого, то программа выдаёт ошибку.
Проблемма вроде не трудная, пытался сам решить, но всё же на данный момент мои знания очень малы.
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Добавил 71-ю строчку. если цены вообще никакой нет. то пропускает...
Код:
#include <array.au3>
    #include <IE.au3>
    $Fname="Item.txt"    
    $Fname2="ISBN.txt"  
    $Fname3="ISBN.ini"  
    $Fname4="item-ISBN-Preis.txt" ; Конечный файл.
    $timer=TimerInit()
   
    $i=1
    $k=1
    $maxItems2=4
    dim $items[1][4],$_items[1][2],$items1[1][4]
    While 1
        toolTip("Строчка = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
        If IniRead($Fname3, "", "$IBSN" & $i & "-" & 1, "")<>"" then
        redim $items[$k+1][$maxItems2]
        $items[$k][0] = IniRead($Fname3, "", "$Item" & $i,"")
        For $j=1 to $maxItems2 -1
        If $items[$k][0]=$items[$k-1][0] Then
        $k-=1
        exitloop
        EndIf
        ReDim $items[$k+1][$maxItems2]
        $items[$k][$j] = IniRead($Fname3, "", "$IBSN" & $i & "-" & $j,"")
        If IniRead($Fname3, "", "$IBSN" & $i & "-" & $maxitems2+1, "")<>"" Then $maxItems2+=1
        next
        $k+=1
        EndIf
        $i+=1
        If IniRead($Fname3, "", "$Item" & $i,0)="exit" then exitloop
        If $i>10000 then exitloop
    WEnd
        $k=1
        For $i=1 to UBound($items)-1
        If StringRegExp($items[$i][1], '[\d]{4}')=1 Then
        If StringRegExp($items[$i][1], '[\d]{13}')=1 then
            If StringRegExp($items[$i][2], '[\d]{10}')=1 then
                $temp=$items[$i][2]
                $items[$i][2]=$items[$i][1]
                $items[$i][1]=$temp
            Else
                ReDim $_items[$k+1][2]
                $_items[$k][0]=$items[$i][0]
                $_items[$k][1]=$items[$i][1]
                $items[$i][1]="error"
            $k+=1
            EndIf
        elseIf StringRegExp($items[$i][1], '[\d]{10}')=1 Then
        If StringRegExp($items[$i][2], '[\d]{13}')=0 Then
            $Items[$i][2]="             "
        EndIf
        Else
            $items[$i][1]="error"
        EndIf
        EndIf
        Next

       
    $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
    $k=0
    $i=0
    $timer=TimerInit()
    Dim $aLinks[1]
    For $i=1 to UBound($Items)-1
    If $items[$i][1]="error" then ContinueLoop
    $WinUrl ='http://www.amazon.de/gp/offer-listing/' & $Items[$i][1] & '/ref=sr_1_1_olp?ie=UTF8&qid=' & $Items[$i][1] & '&sr=8-1&condition=used'
     $oHTTP.Open('GET', $WinUrl & $i, False)
     $oHTTP.Send('')
     $oHTTP.WaitForResponse
     $sHTML = $oHTTP.ResponseText
	If StringRegExp($sHTML,'(?si)class="price">EUR[\s](.+?)</a>', 0)=0 then ContinueLoop
    $aLinksRaw = StringRegExp($sHTML,'(?si)class="price">EUR[\s](.+?)</a>', 3)
    $k+=1
    ReDim $items1[$k+1][4]
    $items1[$k][0]=$items[$i][0]
    $items1[$k][1]=$items[$i][1]
    $items1[$k][2]=$items[$i][2]
    $Items1[$k][3]=$aLinksRaw[0]
    toolTip("Страница = " & $i & " из " & UBound($Items)-1 & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
    Next

 

    ;      Сохранение в txt
    FileOpen($Fname4, 2)
    For $i=1 to UBound($Items1)-1
        toolTip("Запись в txt = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
        If $Items1[$i][2]="" then $Items1[$i][2]="             "
        FileWriteLine($Fname4, "Item: " & $Items1[$i][0] & "    ISBN-10: " & $Items1[$i][1] & "    ISBN-13: " & $Items1[$i][2] & "   Price: " & $Items1[$i][3] & " EUR")
    Next
    FileClose($Fname4)
   

Func _Exit()
    _IEQuit($oIE)
    Exit
EndFunc   ;==>_Exit
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Dk
Можно узнать, как ты умудряешься так всё сообщение процетировать?
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
CreatoR

Жмем "ответ". Справа от любого сообщения мелким шрифтом "цитата".
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
zlo-kazan [?]
Жмем "ответ". Справа от любого сообщения мелким шрифтом "цитата".
Где? :whistle:
Шучу, убрал я это, пользуйтесь всплывающей кнопкой цитирования, ну или ником пользователя (при выделений нужно отрывка).
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
OffTopic:
:D А если выделить всю область ответа?
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
OffTopic:
А ничего не будет... :rofl:
Выделяя область и нажимая цитировать или [++] ничего не происходит... жмем ответ тоже самое... и как теперь цитировать не ставя теги вручную? :blink:
P.S. пробовал через IE8, FF4... может есть чудо браузер? :scratch:
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
zlo-kazan

У меня вопрос, а поиск ISBN во второй программе идёт, по всей странице или толко в етом Формуляре от ebay?
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
zlo-kazan

ПраBилно я считаю что если задат ещё пару параметраB поиска. то скораст ешё силней упадёт. Например

ИСБН иногда пишется так 83856956094
А иногда пишется 922-335-745-7
Если задать например что бы программа ещё и такое написание номера вылавливала, то скорост как бы упадёт в два раза. Или не обезательно что так будет?
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Больше всего времени идет на установку соединения и получения HTML-кода страницы(~1000ms+-500). Поиск по странице идет, по сравнению с этим, практически мгновенно...(~1-10ms) :smile:
Такие ISBN я замечал, но они нормально не ищутся на http://www.amazon.de/. (из-за них были, как раз зависания)
Если придумаете, как их можно обработать, то смогу их включить. :smile:
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
zlo-kazan

Ну по идее, если ввести к примеру 3141006008 и 3-4-1-0-0-6-0-0-8, то книга всё равно будет найдена и не важно где будет стоят дефис на амазон.де.
Я далеко не силён в этом, но что может привести к зависанию вроде всё нахоидт. Может в некоторых книгах срабатывает а в некоторых нет. Может тогда просто ещё не стояло обозночение, если Цена не найдена или ПОЛНОСТьЮ не был найден номер , то пропускать.
Я знаю стоит отсеиватель на то что если Цена не найдена, но отсеивателя на то что Номер полностю не найден, вроде неT.
Может в етом причина?
 
Верх