как разбирать данные DynamicWebsite - PullRequest
1 голос
/ 01 марта 2020

Я Даниэль и совершенно новый в Perl.

Моя проблема - анализ динамического c веб-сайта.

У меня есть локальный веб-сайт, который заполнен динамически. Мой perl скрипт загружает только незаполненную версию

> `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" dir="ltr"> 
    <head>
        <title>About</title>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0"/>
        <!-- Load the 'handheld' style sheet by default -->
        <link type="text/css" rel="stylesheet" href="handheld.css" id="stylesheetused"/>
        <script type="text/javascript">
            if (((window.devicePixelRatio <= 1.0) && (screen.width >= 801)) || (navigator.userAgent.indexOf("MSIE") !== -1) ) {
                document.getElementById('stylesheetused').href='desktop.css';
        }
        </script>
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript" src="ServerInterface.js"></script>
        <script type="text/javascript" src="HeaderFooter.js"></script>
        <script type="text/javascript" src="About.js"></script>
    </head>

    <body>
        <!-- Import the shared page header. -->
        <div id="shared-header"></div>
        <script type="text/javascript">
            $("#shared-header").load("header.html", function (){
                serverInterface.getFactoryConfig(headerFooter.headerCallback);
            });
        </script>

        <!-- The main configuration form. -->
        <div class="config-form">
            <div class="config-title">
                Hardware
            </div>
            <!-- Display the product name. -->
            <div class="config-element-top">
                <span id="display-inline" class="config-name">Name:</span>
                <span id="product-type" class="read-only-text">Not available</span>
            </div>
            <!-- Display the product revision. -->
            <div class="config-element-middle">
                <span id="display-inline" class="config-name">Revision:</span>
                <span id="product-rev" class="read-only-text">Not available</span>
            </div>`

Части "Нет в наличии", где динамически заполняется js. первое «Недоступно» - это то, что мне нужно.

У меня есть perl скрипт, который находит первое «Недоступно», но мне нужен заполненный.

<span id="product-type" class="read-only-text">Denon AVR-X4500H</span>

мой скрипт

#!/usr/bin/perl -w
use LWP::Simple;
use HTML::TreeBuilder::XPath;
use Data::Dumper;
use strict;
my $debug=1;

my $page = get 'http://192.168.1.65/settings/about.html' or die $!;  
my $p = HTML::TreeBuilder::XPath->new_from_content( $page );
binmode( STDOUT, ':utf8');

my @names= $p->findnodes( '//div[@class="config-element-top"]')->[0];
foreach my $name (@names){
        my $title = $name->findvalue( './/span[@id="product-type"]');
        print "Model: $title\n";

}

Выход

Model: Not available

как загрузить заполненную версию?

с уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...