jsoup防止xss_jsoup的功能

hacker|
122

文章目录:

大侠们我想问两个Android开发使用jsoup解析html的相关问题

问题:大侠们我想问两个Android开发使用jsoup解析html的相关问题

回答:第一个问题帮你解决了;第二个问题很简单(但你用错了),但没有你的这个htm文件,没有修改测试

super.onCreate(savedInstanceState);

TextView txt = new TextView(this);

InputStream input;

try {

input = getResources().getAssets().open("temp04_assets/txt01.htm");

int buffersize = input.available();// 取得输入流的字节长度

byte buffer[] = new byte[buffersize];

input.read(buffer);// 将数据读入数组

input.close();// 读取完毕后要关闭流。

String txthtml = EncodingUtils.getString(buffer, "UTF-8");// 设置取得的数据编码,防止乱码

Document doc = Jsoup.parse(txthtml);

Element infoTable = doc.getElementsByAttributeValue("class",

"table002").first();

Elements tableLineInfos = infoTable.select("tr");

for (Element lineInfo : tableLineInfos) {

String lineInfoContent = lineInfo.select("td").last().text()

.trim();

txt.setText(lineInfoContent);

setContentView(txt);

}

} catch (IOException err) {

err.getStackTrace();

}

java中几种解析html的工具

HTML分析是一个比较复杂的工作,Java世界主要有几款比较方便的分析工具:

1.Jsoup 

Jsoup是一个集强大和便利于一体的HTML解析工具。它方便的地方是,可以用于支持用jQuery中css selector的方式选取元素,这对于熟悉js的开发者来说基本没有学习成本。

String content = "blabla";

Document doc = JSoup.parse(content);

Elements links = doc.select("a[href]");

Jsoup还支持白名单过滤机制,对于网站防止XSS攻击也是很好的。

2.HtmlParser

HtmlParser的功能比较完备,也挺灵活,但谈不上方便。这个项目很久没有维护了,最新版本是2.1。HtmlParser的核心元素是Node,对应一个HTML标签,支持getChildren()等树状遍历方式。HtmlParser另外一个核心元素是NodeFilter,通过实现NodeFilter接口,可以对页面元素进行筛选。这里有一篇HtmlParser的使用文章:使用 HttpClient 和 HtmlParser 实现简易爬虫。

3.Apache tika

tika是专为抽取而生的工具,还支持PDF、Zip甚至是Java Class。使用tika分析HTML,需要自己定义一个抽取内容的Handler并继承org.xml.sax.helpers.DefaultHandler,解析方式就是xml标准的方式。crawler4j中就使用了tika作为解析工具。SAX这种流式的解析方式对于分析大文件很有用,我个人倒是认为对于解析html意义不是很大。

InputStream inputStream = null;

HtmlParser htmlParser = new HtmlParser();

htmlParser.parse(new ByteArrayInputStream(page.getContentData()),

contentHandler, metadata, new ParseContext());

4.HtmlCleaner与XPath

HtmlCleaner最大的优点是:支持XPath的方式选取元素。XPath是一门在XML中查找信息的语言,也可以用于抽取HTML元素。XPath与CSS Selector大部分功能都是重合的,但是CSS Selector专门针对HTML,写法更简洁,而XPath则是通用的标准,可以精确到属性值。XPath有一定的学习成本,但是对经常需要编写爬虫的人来说,这点投入绝对是值得的。

java jsoup 爬虫 怎么防止重复爬取

正好最近在学习这方面的内容。

两种思路:

可以将当前爬取的url存在一个list中作登记,在下一次开始爬子链接的时候进行比对,如果已经存在在list中则跳过,如果不存在那么继续爬

可以将所有的url网络先遍历一遍存在list中,然后根据list而不是再次访问子链接url进行爬取,在url存入list的过程中进行查重处理

顺便为了方便控制。建议设置爬取深度,在一定深度内进行爬取。

jsoup和poi两个什么区别

POI一般用于多个系统的合路与分路,用于大型建筑或者有统一建设方承建的项目。

技术指标也比较高,要防止多系统之间的干扰,保证不能把发射机阻塞了。

普通的合路器一般指的是单个器件,接口有限不具备多个系统合路的条件。

我是这么理解的,希望对你有帮助。

2条大神的评论

  • avatar
    访客 2022-07-03 下午 02:59:56

    第二个问题很简单(但你用错了),但没有你的这个htm文件,没有修改测试super.onCreate(savedInstanceState);TextView txt = new TextV

  • avatar
    访客 2022-07-03 上午 07:48:06

    经存在在list中则跳过,如果不存在那么继续爬可以将所有的url网络先遍历一遍存在list中,然后根据list而不是再次访问子链接url进行爬取,在url存入list的过程中进行查重处理顺便为了方便控制。建议设置爬取深度,在一定深度内进行爬取。jsoup和poi两个什么区别POI一般用于多

发表评论