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

【腾讯云】0基础建站 网站模板9元起! >>>  

全体 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')
顶部