1

Good Day,WWW :: Mechanize :: Firefox Как извлечь текст в тегах HTML-тегов?

Как вы печатаете текст тега HTML с помощью WWW::Mechanize::Firefox?

Я попытался:

print $_->text, '/n' for $mech->selector('td.dataCell'); 

    print $_->text(), '/n' for $mech->selector('td.dataCell'); 


    print $_->{text}, '/n' for $mech->selector('td.dataCell'); 

    print $_->content, '/n' for $mech->selector('td.dataCell'); 

Помните, что я не хочу {innerhtml}, но это не работает кстати.

print $_->{text}, '/n' for $mech->selector('td.dataCell'); 

выше линии работает, но выход только множественным /n

ответ

1

Единственное решение, которое я должен использовать :

my $element = $mech->selector('td.dataCell'); 

my $string = $element->{innerHTML}; 

А затем форматирование HTML в пределах каждого dataCell

1

Я хотел бы сделать:

print $mech->xpath('//td[@class="dataCell"]/text()'); 

используя выражение

+0

Исправлена ​​misstake в выражении Xpath –

+1

Он печатает 'Mozrepl :: RemoteObject :: Instance = HASH (s0mehex)' не текст внутри dataCells – surfer190

+0

@ surfer190 Вы должны добавить 'тип => $ mech-> xpathResult ('STRING_TYPE') 'как еще один параметр – CJ7

3
my $node = $mech->xpath('//td[@class="dataCell"]/text()'); 

print $node->{nodeValue}; 

Обратите внимание, что если вы извлечения текста перемежаются с другими тегами, как «Test_1» и «Test_3» в этом примере ...

<html> 
    <body> 
    <form name="input" action="demo_form_action.asp" method="get"> 
     <input name="testRadioButton" value="test 1" type="radio">Test_1<br> 
     <input name="testRadioButton" value="test 3" type="radio">Test_3<br> 
     <input value="Submit" type="submit"> 
    </form> 
    </body> 
</html> 

Вы должны обратиться к ним по их положению в теге (принимая новые строки в счет):

$node = $self->{mech}->xpath("//form/text()[2]", single=>1); 

print $node->{nodeValue}; 

который печатает «Test_1».

+0

Сделал мой день! Мальчик. –

0

Либо:

$element->{textContent};

или

$element->{innerText};

будет работать.