Что нового

[Данные, строки] Помогите выдернуть из файла определенные URL и описания

vaf

Новичок
Сообщения
190
Репутация
2
Добрый день уважаемые форумчане, у меня такая задача.
Дан файл размером 450 Кб, в файле много всего, помимо прочего в файле попадаются вот такие фрагменты

фрагмент 1.
</span><a class="b-serp-url__link" href="http://site.ru/product/yunga_1_y" onmousedown="rc(this, '//yandex.ru/clck/jsredir?from

фрагмент 2.
target="_blank" tabindex="2"><span>Detski Городок Т-обр. с сеткой 60 см - Магазин "Детский"</span></a></h2><div class="b-serp-item__text">Домашний спорткомплекс Городок Т-обр. с сеткой 60 см, комплектация: <i class="b-wbr"></i>Канат, кольца, верёвочная лестница, стойка с сеткой, турник.
</div><div class="b-serp-item__links b-serp-item__links_type_green-and-hover"><span class="b-serp-url b-serp-url_inline_yes"><span class="b-serp-url__item"><a class="b-serp-url__link" href="http://site.ru/" onmousedown="rc(this,

Из первого фрагмента мне нужно выдернуть URL, т.е. все что от </span><a class="b-serp-url__link" href=" и до первого попавшегося "

Из второго фрагмента
Detski Городок Т-обр. с сеткой 60 см - Магазин "Детский

а так же небольшое описание, т.е.
Домашний спорткомплекс Городок Т-обр. с сеткой 60 см, комплектация: <i class="b-wbr"></i>Канат, кольца, верёвочная лестница, стойка с сеткой, турник.

Полный файл можно скачать отсюда
http://yadi.sk/d/lqnT3s1vFswME

Размер файла 441 Кб, в нем всего три строки, длиной около 180 тыс. символов

Беда в том, что как я не бился над регулярными выражениями, никак не могу составить. Регулярные выражения это моя слабость.
Просьба помочь.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [Данные, строки] Помогите составить регулярное выражение.

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[Данные, строки] Помогите составить регулярное выражение." - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Глобальный модератор.









Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.






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

vaf,
Попробуйте примерно так.
Код:
#include <Array.au3>

Local $aTxt, $aTmp, $aRes[1], $iUb, $iTmp

$aTxt = StringRegExp(FileRead(@ScriptDir & '\text.txt'), '(?i)<a class="b-serp-item__title-link" href="(.*?)</div>', 3)
$iUb = UBound($aTxt)
If Not $iUb Then Exit 13
ReDim $aRes[$iUb + 1][3]
For $i = 0 To $iUb - 1
	$aTmp = StringRegExp($aTxt[$i], '(?i)^(.*?)".*?<span>(.+?)<.*?<div class="b-serp-item__text">(.*?)$', 3)
	$iTmp = UBound($aTmp)
	If $iTmp <> 3 Then
		ContinueLoop
	EndIf
	For $j = 0 To 2
		$aTmp[$j] = StringRegExpReplace($aTmp[$j], '<.*?>', '')
		If Not $aTmp[$j] Then
			ContinueLoop 2
		EndIf
	Next
	$aRes[0][0] += 1
	For $j = 0 To 2
		$aRes[$aRes[0][0]][$j] = $aTmp[$j]
	Next
Next
ReDim $aRes[$aRes[0][0] + 1][3]
_ArrayDisplay($aRes)
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
vaf [?]
Полный файл можно скачать отсюда
IMHO это не полный файл.
Почему бы вам не разобрать HTML файл стандартными средствами?
 
Автор
V

vaf

Новичок
Сообщения
190
Репутация
2
madmasles - гениально, как раз то что нужно.
Garrett - да это не полный файл, т.к. к сожалению приходится делать его руками. В идеале бы конечно просто указывать нужный запрос. К примеру
http://yandex.ru/yandsearch?text=site%3Asite.ru
и сделать то же самое для него.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Верх