Что нового

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

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
 
Автор
D

Dk

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

И огромное спасiбо
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Можно сделать так что бы, по завершению 2ой программы автоматически запускалась третия. Так как перебор идёт 4 часа, оставляю на ночь... :-[
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
В выходные 14-15-го... будет время... попробую переделать метод поиска... Это должно ускорить и в разы меньше времени + уберу систему из 3-х скриптов... оставлю 1 конечный + могу добавить запись в Excel...
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Хорошо, тогда я подумаю какие опцыи мне нужны ещё :scratch:

:whistle:

:ok: :ok: :ok:
 
Автор
D

Dk

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

Было сделанно 3 программы, мне нужна только программа 2 и 3 тия.
2-ая которая вытаскивает ISBN из Ebay, а третия которая вытаскивает цены с амазон.
Первая программа работает немного некoрректно... но ето не страшно у меня есть отделна программа которая вытаскищает item с ebay и сохраняет в тхт (столбиком), поетому что бы не утруждать оставим 1 ую программу в стороне.

Сейчас я опишу что и как на картинке....

Кнопки
1) Item-list- open (Открыть тхт с item(ami) который я создам отдельно)
2) Старт, стоп, паусза . (Дуаю и так ясно зачем они ) )
3)export excal (тоже думаю понятно.)

Столбики
1) Item (сдесь всё ясно)
2)ISBN 10 (тоже думаю всё понятно)
3)ISBN 13 (тоже думаю всё понятно)
4)Amazonpreis (цена с www.amazon.de)

5) >=< (Ето параметр. Например мне показывает соTни ценников по 0.08 центов, я Bписывыю туда например 10 евра, и что бы в етом столбике показывалис все цены которые болше или равны 10 еврам.

6) Проверка на http://www.buchhandel.de (эта по сути программа номер 4 должна была быть) Смысл её впринцыпе прост все ISBN номмера из Столбика ">=<" проверит на www.buchhandel.de и если такой номмер был найден то писать "******", если номмер не найден был то оставнть просто пустым. Ета страница просто является поисковиком книг и содержит информацию на них

7)Ebay-Link (ето как раз то что я недавно сделал B excel. с помошю слияния ebay-link(a) и item выходила сылка на етот тавар, к примеру ebay-link www.ebay.de/ + item 465646846, резул'тат hyperlink www.ebay.de/465646846


8)Amazon link (такой же смысл как и ebaylink www.amazon.de/ISBN)


Вообщем ето всё что мне для счастья надо ))) :-[ :-[ :-[ :-[ :-[ :-[ :-[
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
программа номер 3 выдаёт иногда ошибку :( :( :( :(



(68) : ==> The requested action with this object has failed.:
$oHTTP.Send('')
$oHTTP.Send('')^ ERROR
>Exit code: 1 Time: 14016.979
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Если будет вермя, сделайте пожалуйсто, что бы программа сохроняла всё до наступления ошибки.
А то список из 15 тыс. 4-5 часов идёт потом прмерно на 10тыс обрывается и веремя потеряно. Да и заодно мне будет легче найти на коком ИСБН программа выдаёт ошибку.
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
http://ebay.de/
http://amazon.de/
http://www.buchhandel.de/
На них стоит защита от DDOS и дает максимум 2 параллельных подключения и то эти 2 подключения сильно начинают тормозить и получается, что скачивание в 1 поток получается в 6 раз быстрее чем в 2. +Если попытаться установить 100 параллельных подключений, то 1/3 вообще не скачивается. Поэтому сильно ускорить процесс не реально.
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Да ускорение вприцыпе не так важно сейчас... компютер будет ночью работать. Очень важно что бы до наступления ошибки программа сохраняла все номера которые прошла, так я буду видеть на каком номере ошибка. :(
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Ну сделайте хотябы что бы после 10 проверенных номмеров шло афтоматическое сохранение.
Пожалуйсто :(
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
http://autoit-script.ru/index.php?topic=124.0
 
Верх