Что нового

Пропуск несуществующих страниц в HTML

BuZZinga

Новичок
Сообщения
13
Репутация
0
Доброе время суток!
Столкнулся с небольшой проблемой. Есть код для парсинга HTML страничек на наличие данных.
Код:
#include <MsgBoxConstants.au3>
#include <Inet.au3>
#include <StringConstants.au3>
#include <Array.au3>
#include <Inet.au3>

$Fname ='item.txt'
$Fname2 ='works.txt'


$i=1
    Dim $items[$i+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

	$q=0
    $k=0
    $i=0
    $timer=TimerInit()
    Dim $aLinks[2]
    For $i=1 to UBound($Items)-1
    $WinUrl='https://блаблабла/showprofile/item/' & $Items[$i][0] &'/'
    toolTip("Страница = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
    $sHTML = _INetGetSource($WinUrl)
	If StringRegExp($sHTML,'(?si)<div class="pab_char"><span>Age</span>
(.*?)</div>', 1)=0 then ContinueLoop
	$aLinksRaw_Age= StringRegExp($sHTML,'(?si)<div class="pab_char"><span>Age</span>
(.*?)</div>', 3)
    $Items[$i][1]=$aLinksRaw_Age[0]

	Next


 FileOpen($Fname2, 2)

    For $i=1 to UBound($Items)-1
        toolTip("Запись в txt = " & $i & " Прошло времени = " & round((Timerdiff($timer)/1000), 0) & " сек", 0,0)
		If StringRegExp($sHTML,'(?si)<div class="pab_char"><span>Age</span>
(.*?)</div>', 1)=1 then ContinueLoop
		FileWriteLine($Fname2, "Id  " & $Items[$i][0] & "  Age " & $Items[$i][1] )
    For $j=2 to $items[0][1]-1
        If $Items[$i][$j]="" then exitloop

        FileWriteLine($Fname2, @TAB&@TAB&"   Age " & $Items[$i][$j])
    Next
    Next

	FileClose($Fname2)

Он на выходе в txt файле выдаёт значения в данном виде:
Код:
Id  40541  Age 20
Id  39107  Age 25
Id  40657  Age 37
Id  40603  Age 26
Id  40653  Age 25
Id  747  Age 27
Id  15  Age 
Id  11  Age
Подскажите, как правильно оформить код для того, чтобы несуществующие ID не отображались в текстовом файле?
Заранее благодарен за подсказки)
 
Автор
B

BuZZinga

Новичок
Сообщения
13
Репутация
0
Garrett сказал(а):
BuZZinga [?]
чтобы несуществующие ID
Оригинально. Зачем их пропускать если они не существуют?!

в текстовом файле, откуда берутся ID, просто перебор чисел от 1 до 10000.
а мне нужно чтобы при записи в файл, те ID которые не существуют, не отображались там...то есть
Код:
Id  40541  Age 20
Id  39107  Age 25
Id  40657  Age 37
Id  40603  Age 26
Id  40653  Age 25
Id  747  Age 27
Id  15  Age 
Id  11  Age
было без 2х последних
 

ildar

Осваивающий
Сообщения
252
Репутация
29
То есть в итоге из
Код:
Id  40541  Age 20
Id  39107  Age 25
Id  40657  Age 37
Id  40603  Age 26
Id  40653  Age 25
Id  747  Age 27
Id  15  Age 
Id  11  Age
получилось
Код:
Id  39107  Age 25
Id  40657  Age 37
Id  40603  Age 26
Id  40653  Age 25
Id  747  Age 27
без
Код:
Id  15  Age 
Id  11  Age
я правильно понял?
Если нет последних цифр, то строку не писать?
Если я угадал что нужно то вместо этого
Код:
FileWriteLine($Fname2, "Id  " & $Items[$i][0] & "  Age " & $Items[$i][1] )

поставь условие
Код:
IF $Items[$i][1] <> NULL Then FileWriteLine($Fname2, "Id  " & $Items[$i][0] & "  Age " & $Items[$i][1] )
 
Автор
B

BuZZinga

Новичок
Сообщения
13
Репутация
0
ildar сказал(а):
То есть в итоге из
Код:
Id  40541  Age 20
Id  39107  Age 25
Id  40657  Age 37
Id  40603  Age 26
Id  40653  Age 25
Id  747  Age 27
Id  15  Age 
Id  11  Age
получилось
Код:
Id  39107  Age 25
Id  40657  Age 37
Id  40603  Age 26
Id  40653  Age 25
Id  747  Age 27
без
Код:
Id  15  Age 
Id  11  Age
я правильно понял?
Если нет последних цифр, то строку не писать?
да, если ID на сайте не существует, просто пропускать..
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Если ID на сайте https://блаблабла/ нету, то пропускай. Сайт либо вернет ошибку 404 либо напишет примерно следующее: Профиль не найден.
 
Автор
B

BuZZinga

Новичок
Сообщения
13
Репутация
0
inververs сказал(а):
Если ID на сайте https://блаблабла/ нету, то пропускай. Сайт либо вернет ошибку 404 либо напишет примерно следующее: Профиль не найден.
так проблема в том, что ID на сайте не по порядку расположены, знаю только первый активный и последний активный...ID на сайте около 2х тысяч, поэтому хотел бы как-то автоматизировать этот процес, но бьюсь уже 3 дня и ни на секунду не приблизился к решению..
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Может поиск есть на сайте? Ищи всех, сграбишь ID. Если нету поищи по этому сайту в яндексах, гуглах они могут проиндексировать сайт. Иначе только полный перебор.
 
Автор
B

BuZZinga

Новичок
Сообщения
13
Репутация
0
inververs сказал(а):
Может поиск есть на сайте? Ищи всех, сграбишь ID. Если нету поищи по этому сайту в яндексах, гуглах они могут проиндексировать сайт. Иначе только полный перебор.
да я уже догадывался что отдельно придёться для граббинга ID скрипт строчить...
с позволения задам другой вопросик.. как изымать не одно данное, а несколько, например:
Код:
<div class="pab_char"><span>Age</span>
21</div>
									<div class="pab_char"><span>Height</span>
165 cm = 5'5''</div>
									<div class="pab_char"><span>Weight</span>
50 kg = 110 lbs</div>
									<div class="pab_char"><span>Eyes</span>
Hazel</div>
									<div class="pab_char"><span>Hair</span>
Light-Brown</div>
									<div class="pab_char"><span>Education</span>
Incomplete Higher</div>
Есть ли возможность все эти данные как-то сразу вместе принять?) а то мне придеться ещё проги на каждую из них писать...
интересуют только значения, так же как и в примере
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Или я чего-то не понял или...

те ID которые не существуют, не отображались

То есть ID 15 и ID 11 это не ID???

P.S. Друзья давайте как-то немного посерьёзнее!

BuZZinga [?]
позволения задам другой вопросик

Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Модератор.
 
Автор
B

BuZZinga

Новичок
Сообщения
13
Репутация
0
Garrett сказал(а):
Или я чего-то не понял или...

те ID которые не существуют, не отображались

То есть ID 15 и ID 11 это не ID???

P.S. Друзья давайте как-то немного посерьёзнее!

BuZZinga [?]
позволения задам другой вопросик

[warn]За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Модератор.[/warn]







нужно просто чтобы они не записывались в текстовый файл, и всё...
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Предупреждение За нарушение общих правил (пункт В.2):
Старайтесь избегать “Over quoting” (преувеличенное цитирование) - цитируйте только необходимую часть сообщения, которая наилучшим образом подчеркнёт суть цитируемого.


С уважением, ваш Модератор.
 
Верх