@yulongsun
2018-05-02T15:22:51.000000Z
字数 1656
阅读 1113
技术调研
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
中文版文档:http://www.open-open.com/jsoup/
网页版爬虫:https://try.jsoup.org/
入门:
1. 解析和遍历一个文档
输入:
2. 解析一个html字符串
3. 解析一个body片段
4. 从一个url加载一个document对象
5. 根据一个文件加载一个doucument对象
抽取:
6. 使用dom方法来遍历一个document对象
7. 使用选择器来查找元素
8. 从元素集合抽取属性,html,文本内容
9. URL处理
数据修改:
11. 设置属性值
12. 设置元素的html内容
13. 设置元素的文本内容
基础功能代码
package jsoup;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;import java.io.IOException;public class ListLinks {public static void main(String[] args) throws IOException {String url = "http://career.hdu.edu.cn/";// String url = "http://www.haitou.cc/";print("Fetching %s...", url);Document doc = Jsoup.connect(url).get();Elements links = doc.select("a[href]");Elements media = doc.select("[src]");Elements imports = doc.select("link[href]");/*Media*/print("\nMedia: (%d)", media.size());for (Element element : media) {String tagName = element.tagName();if (tagName.equals("img"))print(" * %s: <%s> %sx%s (%s)", tagName, element.attr("abs:element"), element.attr("width"), element.attr("height"), trim(element.attr("alt"), 20));elseprint(" * %s: <%s>", tagName, element.attr("abs:element"));}/*Import*/print("\nImports: (%d)", imports.size());for (Element link : imports) {print(" * %s <%s> (%s)", link.tagName(), link.attr("abs:href"), link.attr("rel"));}/*Links*/print("\nLinks: (%d)", links.size());for (Element link : links) {print(" * a: <%s> (%s)", link.attr("abs:href"), trim(link.text(), 35));}}private static void print(String msg, Object... args) {System.out.println(String.format(msg, args));}private static String trim(String s, int width) {if (s.length() > width)return s.substring(0, width - 1) + ".";elsereturn s;}}