1

到目前为止,我正在使用并curl提取网页的某些部分,例如....content .... 我想忽略所有其他标题(例如,,)。除了我现在这样做的方式真的很慢。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短语化并将其保存到另一个文件中。我只想简单地编写这段代码。我想知道是否有一种方法lynx可以hmtl2text让您提取具有指定标题的网页内容。就像我想从网页(www.badexample.com <---实际上不是链接)中提取一些内容一样:

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

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

4

2 回答 2

1

必须在bash吗?PHP和怎么样DOMDocument()

$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();
于 2013-12-25T21:04:21.530 回答
1

您可以为此使用 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>"
于 2013-12-25T21:06:18.640 回答