Что нового

[Данные, строки] Найти вхождение в строке (html код)

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Gealut [?]
На самом деле я из этих html буду еще keywords вытаскивать, это то, что между <a x_shutterstock_keyword=" и " href= . Их в каждом файле от10 до 30-40.
Код:
#include "IE.au3"

Dim $descript
$file = "http://www.shutterstock.com/pic-1097173.html"

$oIE = _IECreate($file)
$oLinks = _IETagNameGetCollection ($oIE, "a")
For $oLink In $oLinks
	If $oLink.className <> "0" Then 
		If ($oLink.className = "middlelink") Then
			MsgBox(0,"keywords: " & $oLink.getAttribute("x_shutterstock_keyword"), "Links: " & $oLink.getAttribute("href") )
		EndIf
	EndIf
Next
 

Gealut

Новичок
Сообщения
38
Репутация
0
Garrett
Все-таки для меня что-то парсинг html что-то очень трудно дается... Точнее, ничего не получается самостоятельно.
Помогите, пожалуйста, еще создать код с _IETagNameGetCollection для вычленения description (или keywords) из такого куска файла:

Код:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<meta name="keywords" content="Cosmopolitan Martini, nobody,indoor,alcohol,alcoholic beverage,cocktail,cropped,drink,fruit,high angle view,martini,mixed drink,single subject,still life,tropical,close-up,close up,closeup,fruit,fruity,selective focus,garnish,cosmopolitan,glass, stock photos, royalty free photos, royalty free images, stock photography, royalty free stock photos, photographs, pictures, royalty free illustrations, Cosmopolitan Martini">

<meta name="description" content="Stock photo, image, picture, photography of Cosmopolitan Martini">

<link rel="stylesheet" type="text/css" href="/include/inmagine2009.css?ver=013">

То есть результатом вычленения description должен стать текст:
Stock photo, image, picture, photography of Cosmopolitan Martini

Сам не смог - запутался в атрибутах.

Спасибо.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Код:
$sText=ClipGet()
$sRez=StringRegExpReplace ( $sText, '(?s).*<meta name="description"[^"]+"(.*?)">.*', "\1") 
MsgBox(0,'$sRez',$sRez)
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Gealut [?]
То есть результатом вычленения description должен стать текст:Stock photo, image, picture, photography of Cosmopolitan Martini

Код:
#include "IE.au3"

Dim $descript
$sUrl = "http://www.shutterstock.com/pic-1097173.html"

$oIE = _IECreate($sUrl)
$oMetas = _IETagNameGetCollection ($oIE, "meta")
For $oMeta In $oMetas
	If $oMeta.Name <> "0" Then 
		If $oMeta.Name = "description" Then
			MsgBox(0,"Name : " & $oMeta.Name, "Content: " & $oMeta.content)
		EndIf
	EndIf
Next
 

Gealut

Новичок
Сообщения
38
Репутация
0
Garrett
Спасибо. Получается, что я почти все сделал точно также, только вместо $oMeta.content написал $oMeta.innerText, поэтому у меня не сработало. Ваш вариант работает отлично.

Спасибо и всем остальным, кто мне помогал. С регулярными выражениями обязательно буду продолжать разбираться.
 

Houl777

Знающий
Сообщения
38
Репутация
5
Чтобы не создавать лишнюю тему.

Дано: Уже загруженная страница в IE
Требуется: Вытащить текст между <span id="ctl00_MainContent_aaaaafu_ctl02_aaaaazq"> и </span>

<span id="ctl00_MainContent_aaaaafu_ctl02_aaaaazq"> и </span> на странице уникальные - текст между ними меняется. Предыдущие примеры не сработали
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Houl777 [?]
Чтобы не создавать лишнюю тему
Опять...

Требуется: Вытащить текст между
Ну в справке же есть пример, неужели так сложно его использовать:

Код:
$array = StringRegExp('<span id="ctl00_MainContent_aaaaafu_ctl02_aaaaazq"> и </span>', '<span id="ctl00_MainContent_.*">(.*)</span>', 3)

MsgBox(64, 'Title', $array[0])
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Houl777
Вариант №1
Код:
#include "IE.au3"
WinActivate("Windows Internet Explorer")
$oIE = _IEAttach("[CLASS:Internet Explorer_Server; INSTANCE:1]","instance")
$oSpans = _IETagNameGetCollection ($oIE, "span")
For $oSpan In $oSpans
    $sData = _IEPropertyGet($oSpan, "innerHTML")
    ConsoleWrite($sData & @CRLF)
Next

Вариант №2
Код:
#include "IE.au3"
WinActivate("Windows Internet Explorer")
$oIE = _IEAttach("[CLASS:Internet Explorer_Server; INSTANCE:1]","instance")
$oSpan = _IEGetObjById($oIE, "ctl00_MainContent_aaaaafu_ctl02_aaaaazq")
$sData = _IEPropertyGet($oSpan, "innerHTML")
ConsoleWrite($sData & @CRLF)



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

axlwor [?]
Houl777 счаз заставят читать правила
Разумеется! Тем более всем новым пользователям, до 20-го сообщения, выводятся основные правила в самом начале!
 

Houl777

Знающий
Сообщения
38
Репутация
5
Спасибо. Помогло.
Все же хороший гайд по работе в IE с Autoit не помешал бы. Стандартное руководство хорошее, но больно скудное - не всегда понятно что и где применять надо.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Houl777 [?]
Все же хороший гайд по работе в IE
Ну, это будет необъятный труд, потому как многое что можно реализовать не входит в IE.au3. В ней только основное. Нетривиальную задачу придётся решать самому! Могу предложить вам пару полезных ссылок, которые помогут многое прояснить.

1. WebBrowser Control
2. Web browser DOM support
 
Верх