zlo-kazan
Скриптер
- Сообщения
- 374
- Репутация
- 100
Теперь ищет ISBN с черточками... удаляет черточки сохраняет в 10-ти знаковом формате
Код:
#include <array.au3>
$Fname="Item.txt" ;Файл из которого брать Item
$Fname2="ISBN.txt" ;Файл в который сохранять полученые ISBN TXT
$Fname3="ISBN.ini" ;Файл в который сохранять полученые ISBN INI
$i=1
Dim $items[$i+1][2]
$Items[0][1]=2
FileOpen($Fname, 0)
$timer=TimerInit()
While FileReadLine($Fname, $i)
redim $items[$i+1][2]
$Items[$i][0]=FileReadLine($Fname, $i)
$i+=1
toolTip("Страница = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
WEnd
FileClose($Fname)
$maxItems=UBound($Items)
$maxItems2=2
$Items[0][0]=UBound($Items)-1
$oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
$k=0
$i=0
$timer=TimerInit()
Dim $aLinks[1]
For $i=1 to UBound($Items)-1
$WinUrl ='http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=' & $Items[$i][0] & '&ssPageName=STRK:MEWNX:IT'
toolTip("Страница = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
$oHTTP.Open('GET', $WinUrl & $i, False)
$oHTTP.Send('')
$oHTTP.WaitForResponse
$sHTML = $oHTTP.ResponseText
$aLinksRaw = StringRegExp($sHTML,'(?si)ISBN.+?headers=.+?">([\d]+?)</td>', 3)
If StringRegExp($aLinksRaw[0],'[\d]{10}',0)=0 and StringRegExp($sHTML,'(?si)ISBN.+?([\d\-]{10,20})', 0)=1 Then
$aLinksRaw = StringRegExp($sHTML,'(?si)ISBN.+?([\d\-]{10,20})', 3)
;~ _ArrayDisplay($aLinksRaw, "1")
$aLinksRaw[0] = StringRegExpReplace($aLinksRaw[0], "-","")
redim $aLinksRaw[1]
;~ _ArrayDisplay($aLinksRaw, "2")
EndIf
For $j=1 to uBound($aLinksRaw)
ReDim $Items[$maxItems][$MaxItems2+1]
$Items[$i][$j]=$aLinksRaw[$j-1]
If $j=$MaxItems2 Then
$MaxItems2+=1
$Items[0][1]=$MaxItems2
EndIf
Next
Next
;~ _ArrayDisplay($Items)
; Сохранение в txt
FileOpen($Fname2, 2)
For $i=1 to UBound($Items)-1
toolTip("Запись в txt = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
FileWriteLine($Fname2, "Item " & $Items[$i][0] & " ISBN " & $Items[$i][1])
For $j=2 to $items[0][1]-1
If $Items[$i][$j]="" then exitloop
FileWriteLine($Fname2, @TAB&@TAB&" ISBN " & $Items[$i][$j])
Next
Next
FileClose($Fname2)
; Сохранение в Ini
For $i=1 to UBound($Items)-1 ;Цикл в котором идет работа с ini-файлом... присвоение настроек если уже есть. иначе создает новый ini.
toolTip("Запись в ini = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
IniWrite(@ScriptDir & "\" & $Fname3, "", "$Item" & $i, $Items[$i][0])
For $j=1 to $items[0][1]-1
If $Items[$i][$j]="" then exitloop
IniWrite(@ScriptDir & "\" & $Fname3, "", "$IBSN" & $i & "-" & $J, $Items[$i][$j])
Next
next
IniWrite(@ScriptDir & "\" & $Fname3, "", "$Item" & $i+1, "exit")
Код:
#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
EndIf
$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