1

再会,

如何用 打印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

4

4 回答 4

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”。

于 2015-01-14T18:05:23.293 回答
1

我会做 :

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

使用表达式

于 2013-03-27T22:16:05.967 回答
1

我唯一的解决方案是使用:

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

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

然后在每个中格式化htmldataCell

于 2013-03-29T14:28:05.433 回答
0

任何一个:

$element->{textContent};

或者

$element->{innerText};

将工作。

于 2016-09-12T03:55:48.390 回答