WWW :: Mechanize :: Firefox如何在HTML元素标签中提取文本?

时间:2013-03-27 22:11:09

标签: html perl web-scraping www-mechanize www-mechanize-firefox

美好的一天,

如何使用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 个答案:

答案 0 :(得分: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”。

答案 1 :(得分:1)

我愿意:

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

使用表达式

答案 2 :(得分:1)

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

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

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

然后在每个dataCell

中格式化html

答案 3 :(得分:0)

或者:

$element->{textContent};

$element->{innerText};

会奏效。