如何从带有 bash 中某些标题的网页中提取内容



到目前为止,我正在使用curl w3msed来提取网页的某些部分,例如<body>......内容。。。。</body> .我想忽略所有其他标头(例如。 <a></a><div></div>)。除了我现在的做法真的很慢。

curl -L "http://www.somewebpage.com" | sed -n -e ':<article class=:,:<div id="below">: p' > file.html 
w3m -dump file.html > file2.txt

上面的这两行真的很慢,因为curl首先将整个网页保存到一个文件中并对其进行短语,然后w3m短语并将其保存到另一个文件中。我只想简单地编写这段代码。我想知道是否有一种方法可以使用lynxhmtl2text来提取具有指定标题的网页内容。所以就像我想从网页(www.badexample.com <---实际上不是链接)中提取内容一样:

<title>blah......blah...</title>
            <body>
                 Some text I need to extract
            </body>
 more stuffs

是否有一个程序可以指定提取内容的参数?所以我会指定someprogram <body></body> www.badexample.com,它只会在这些标题中提取内容?

你可以使用 Perl 的一行:

perl -MLWP::Simple -e "print get ($ARGV[0]) =~ /<$ARGV[1]>(.*?)</$ARGV[1]>/;" http://www.example.com/ title

除了 html 标记,您还可以传递整个正则表达式:

perl -MLWP::Simple -e "print get ($ARGV[0]) =~ /$ARGV[1]/;" "http://www.example.com/" "<body>(.*?)</body>"

它一定在bashPHPDOMDocument()呢?

$dom = new DOMDocument();
$new_dom = new DOMDocument();
$url_value = 'http://www.google.com';
$html = file_get_contents($url_value);
$dom->loadHTML($html);
$body = $dom->getElementsByTagName('body')->item(0);
foreach ($body->childNodes as $child){
  $new_dom->appendChild($new_dom->importNode($child, true));
}
echo $new_dom->saveHTML();