到目前为止,我在curl
和w3m
使用sed
来提取网页的部分内容,例如<body>
....内容...... {{1} }。我想忽略所有其他标头(例如</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
方法允许您使用指定的标头提取网页内容。因此,如果我想从这个内容中提取某些内容(www.badexample.com&lt; ---实际上不是链接):
hmtl2text
是否有程序可以指定提取内容的参数?所以我会指定<title>blah......blah...</title>
<body>
Some text I need to extract
</body>
more stuffs
,它只会在那些标题中提取内容?
答案 0 :(得分: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();
答案 1 :(得分: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>"