HtmlSucker 0.0.1 发布,惊恐 —— 红薯又写代码了!! - 开源中国社区
Float_left Icon_close
HtmlSucker 0.0.1 发布,惊恐 —— 红薯又写代码了!!
oschina 2018年01月30日

HtmlSucker 0.0.1 发布,惊恐 —— 红薯又写代码了!!

oschina oschina 发布于2018年01月30日 收藏 20 评论 57

全体 OSChina 官方程序员都吓屎了,因为红薯又写代码了。这次他撸了个 HtmlSucker ,这个名字一听就很猥琐有没有。而且其实也没什么卵用,无非就是在不知道 HTML 页面规则的情况下,从一个 HTML 网页中提取文章的正文信息。用来干嘛呢? 反正肯定跟爬虫有关。

听说第一个版本还很弱智,原理是计算最大文本节点的方式来获取正文信息。(就这也好意思发布一个项目,难道欺负我朝无人吗?)

请大家前往 https://gitee.com/ld/HtmlSucker 吐槽!

Maven:

<dependency>
    <groupId>net.oschina.htmlsucker</groupId>
    <artifactId>HtmlSucker</artifactId>
    <version>0.0.1</version>
</dependency>

示例代码:

public static void main(String[] args) throws IOException {
    String url = "https://www.oschina.net/news/92798/micro-match-1-0-1-released";
    System.out.println(HtmlSucker.parse(url, 20000));
}
本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:HtmlSucker 0.0.1 发布,惊恐 —— 红薯又写代码了!!
分享
评论(57)
精彩评论
39
红薯:去财务那结一下工资,过完年不用来了
25
必须坚决反对老板写代码,因为这几天我不停被他的代码坑到想屎,哼!坚决反对,差评,负分!
9
XXL携#xxl-job##xxl-mq##xxl-api##xxl-conf##xxl-excel##xxl-crawler#……等十余个项目前来祝贺。并表示佩服 :thumbsup:
7
在知道页面规则的情况下,原生PHP获取网页标题和正文是很简答的事哟.
就拿当前页面来说,PHP就是几句代码的事:
<?php
$doc = new DOMDocument();
@$doc->loadHTML(file_get_contents('https://www.oschina.net/news/92898/htmlsucker-0-0-1'));
$nodes = $doc->getElementsByTagName('title');
echo $nodes->item(0)->nodeValue . "\n";
$xpath = new DOMXPath($doc);
// 用Firefox查看HTML页面规则,复制XPath表达式
$entries = $xpath->query('/html/body/section/section/div[ 2 ]/div[ 1 ]/div[ 1 ]/div[ 1 ]/div[ 3 ]');
foreach ($entries as $entry) { echo $entry->nodeValue . "\n"; }
7
还活着吗,赶紧删库跑路吧。
最新评论
0
HTML口交器
0

引用来自“不是小白”的评论

等晚上@红薯 是不是要出一个BUG修复版本

引用来自“Ryan-瑞恩”的评论

更新频率就是这么高。。。。

引用来自“不是小白”的评论

欢哥,写的有啥项目没

引用来自“Ryan-瑞恩”的评论

回复@不是小白 : 没,,水平有限

引用来自“不是小白”的评论

一起搞一个吧

引用来自“Ryan-瑞恩”的评论

回复@不是小白 : 可以,,搞啥,你带头。

引用来自“不是小白”的评论

回复@Ryan-瑞恩 : 你说搞啥就搞啥

引用来自“Ryan-瑞恩”的评论

回复@不是小白 : 你是我大哥,你说搞点啥。。。

引用来自“不是小白”的评论

回复@Ryan-瑞恩 : 搞瞎猫
回复@不是小白 : 说正经的,,,搞点啥。

引用来自“不是小白”的评论

等晚上@红薯 是不是要出一个BUG修复版本

引用来自“Ryan-瑞恩”的评论

更新频率就是这么高。。。。

引用来自“不是小白”的评论

欢哥,写的有啥项目没

引用来自“Ryan-瑞恩”的评论

回复@不是小白 : 没,,水平有限

引用来自“不是小白”的评论

一起搞一个吧

引用来自“Ryan-瑞恩”的评论

回复@不是小白 : 可以,,搞啥,你带头。

引用来自“不是小白”的评论

回复@Ryan-瑞恩 : 你说搞啥就搞啥

引用来自“Ryan-瑞恩”的评论

回复@不是小白 : 你是我大哥,你说搞点啥。。。

引用来自“不是小白”的评论

回复@Ryan-瑞恩 : 搞瞎猫
红薯是来搞笑的~
0
sucker 吸管的意思
0
看来以后只要从开源中国抓文章就够了(^_-)
0
已经看到0.0.2的tag了- -
0
默默路过,功能可以,但是名称,好象有点不雅
0

引用来自“不是小白”的评论

等晚上@红薯 是不是要出一个BUG修复版本

引用来自“Ryan-瑞恩”的评论

更新频率就是这么高。。。。

引用来自“不是小白”的评论

欢哥,写的有啥项目没

引用来自“Ryan-瑞恩”的评论

回复@不是小白 : 没,,水平有限

引用来自“不是小白”的评论

一起搞一个吧

引用来自“Ryan-瑞恩”的评论

回复@不是小白 : 可以,,搞啥,你带头。

引用来自“不是小白”的评论

回复@Ryan-瑞恩 : 你说搞啥就搞啥

引用来自“Ryan-瑞恩”的评论

回复@不是小白 : 你是我大哥,你说搞点啥。。。
回复@Ryan-瑞恩 : 搞瞎猫
0

引用来自“不是小白”的评论

等晚上@红薯 是不是要出一个BUG修复版本

引用来自“Ryan-瑞恩”的评论

更新频率就是这么高。。。。

引用来自“不是小白”的评论

欢哥,写的有啥项目没

引用来自“Ryan-瑞恩”的评论

回复@不是小白 : 没,,水平有限

引用来自“不是小白”的评论

一起搞一个吧

引用来自“Ryan-瑞恩”的评论

回复@不是小白 : 可以,,搞啥,你带头。

引用来自“不是小白”的评论

回复@Ryan-瑞恩 : 你说搞啥就搞啥
回复@不是小白 : 你是我大哥,你说搞点啥。。。
0

引用来自“eechen”的评论

在知道页面规则的情况下,原生PHP获取网页标题和正文是很简答的事哟.
就拿当前页面来说,PHP就是几句代码的事:
<?php
$doc = new DOMDocument();
@$doc->loadHTML(file_get_contents('https://www.oschina.net/news/92898/htmlsucker-0-0-1'));
$nodes = $doc->getElementsByTagName('title');
echo $nodes->item(0)->nodeValue . "\n";
$xpath = new DOMXPath($doc);
// 用Firefox查看HTML页面规则,复制XPath表达式
$entries = $xpath->query('/html/body/section/section/div[ 2 ]/div[ 1 ]/div[ 1 ]/div[ 1 ]/div[ 3 ]');
foreach ($entries as $entry) { echo $entry->nodeValue . "\n"; }

引用来自“开源中国首席深夜司机”的评论

大神,你这个是php官方自带的功能吗?还是要引入其他库?

引用来自“eechen”的评论

这些都是PHP内置的功能,PHP手册里都有介绍.
http://php.net/DOMDocument
http://php.net/DOMXPath
PHP内置DOMDocument和DOMXPath,自带解析HTML的能力,使用XPath表达式获取节点内容还是很轻松的,前提是你要熟悉XPath表达式,就像你在前端使用jQuery得熟悉jQuery的选择器表达式一样.
Firefox/Chrome开发者工具里选中元素可以复制XPath.
http://www.runoob.com/xpath/xpath-syntax.html
回复@eechen : 请问php是怎么做微服务和分布式的?还有大数据?
0
偷偷进服务器,把代码改了,然后跑路吧٩(๑^o^๑)۶
0
开源中国为啥老在黑老板
0
红薯:赶紧滚蛋!什么?还想要工资?滚....
0
#flying# ,前来祝贺并学习。
2

引用来自“eechen”的评论

在知道页面规则的情况下,原生PHP获取网页标题和正文是很简答的事哟.
就拿当前页面来说,PHP就是几句代码的事:
<?php
$doc = new DOMDocument();
@$doc->loadHTML(file_get_contents('https://www.oschina.net/news/92898/htmlsucker-0-0-1'));
$nodes = $doc->getElementsByTagName('title');
echo $nodes->item(0)->nodeValue . "\n";
$xpath = new DOMXPath($doc);
// 用Firefox查看HTML页面规则,复制XPath表达式
$entries = $xpath->query('/html/body/section/section/div[ 2 ]/div[ 1 ]/div[ 1 ]/div[ 1 ]/div[ 3 ]');
foreach ($entries as $entry) { echo $entry->nodeValue . "\n"; }
知道规则那就没有什么意义了,各个语言脚本规则都差不多。虽然PHP自带模块,不过其他语言安装三方包也很方便啊,比如像红薯的这个项目,调用就2句。
0
赶紧删库跑路
0

引用来自“eechen”的评论

在知道页面规则的情况下,原生PHP获取网页标题和正文是很简答的事哟.
就拿当前页面来说,PHP就是几句代码的事:
<?php
$doc = new DOMDocument();
@$doc->loadHTML(file_get_contents('https://www.oschina.net/news/92898/htmlsucker-0-0-1'));
$nodes = $doc->getElementsByTagName('title');
echo $nodes->item(0)->nodeValue . "\n";
$xpath = new DOMXPath($doc);
// 用Firefox查看HTML页面规则,复制XPath表达式
$entries = $xpath->query('/html/body/section/section/div[ 2 ]/div[ 1 ]/div[ 1 ]/div[ 1 ]/div[ 3 ]');
foreach ($entries as $entry) { echo $entry->nodeValue . "\n"; }

引用来自“开源中国首席深夜司机”的评论

大神,你这个是php官方自带的功能吗?还是要引入其他库?
这些都是PHP内置的功能,PHP手册里都有介绍.
http://php.net/DOMDocument
http://php.net/DOMXPath
PHP内置DOMDocument和DOMXPath,自带解析HTML的能力,使用XPath表达式获取节点内容还是很轻松的,前提是你要熟悉XPath表达式,就像你在前端使用jQuery得熟悉jQuery的选择器表达式一样.
Firefox/Chrome开发者工具里选中元素可以复制XPath.
http://www.runoob.com/xpath/xpath-syntax.html
25
必须坚决反对老板写代码,因为这几天我不停被他的代码坑到想屎,哼!坚决反对,差评,负分!
1

引用来自“eechen”的评论

在知道页面规则的情况下,原生PHP获取网页标题和正文是很简答的事哟.
就拿当前页面来说,PHP就是几句代码的事:
<?php
$doc = new DOMDocument();
@$doc->loadHTML(file_get_contents('https://www.oschina.net/news/92898/htmlsucker-0-0-1'));
$nodes = $doc->getElementsByTagName('title');
echo $nodes->item(0)->nodeValue . "\n";
$xpath = new DOMXPath($doc);
// 用Firefox查看HTML页面规则,复制XPath表达式
$entries = $xpath->query('/html/body/section/section/div[ 2 ]/div[ 1 ]/div[ 1 ]/div[ 1 ]/div[ 3 ]');
foreach ($entries as $entry) { echo $entry->nodeValue . "\n"; }
文不对题
0

引用来自“eechen”的评论

在知道页面规则的情况下,原生PHP获取网页标题和正文是很简答的事哟.
就拿当前页面来说,PHP就是几句代码的事:
<?php
$doc = new DOMDocument();
@$doc->loadHTML(file_get_contents('https://www.oschina.net/news/92898/htmlsucker-0-0-1'));
$nodes = $doc->getElementsByTagName('title');
echo $nodes->item(0)->nodeValue . "\n";
$xpath = new DOMXPath($doc);
// 用Firefox查看HTML页面规则,复制XPath表达式
$entries = $xpath->query('/html/body/section/section/div[ 2 ]/div[ 1 ]/div[ 1 ]/div[ 1 ]/div[ 3 ]');
foreach ($entries as $entry) { echo $entry->nodeValue . "\n"; }
可以直接$doc->loadHTMLFile('https://www.oschina.net/news/92898/htmlsucker-0-0-1')
顶部