static void main(String[] args) { // 根据全国各个高校的地址,获取视频中相应列表的URL和要抓取的值 Document document = null ; try { document = Jsoup .connect( "http://gaokao.chsi.com.cn/sch/search.do?start=0" ) .get(); } catch (IOException e) { e.printStackTrace(); } Element element = document.body(); //System.out.println(element); Elements ths = document.select( "th" ); System.out.println(ths); Elements tds = document.select( "td" ); System.out.println(tds); } 一、简介 该类是位于select包下,直接继承自Object,所有实现的接口有Cloneable, Iterable, Collection, List类声明: public class Elements extends Object implements List, Cloneable可以使用Element.select(String) 方法去得到Elements 对象。 二、构造方法 1 、 public Elements() 默认构造方法 2 、 public Elements( int initialCapacity) 指定一个初始容量创建一个Elements对象。 3 、 public Elements(Collection elements) 使用已知元素集创建一个Elements对象。 4 、 public Elements(List elements) 使用已知元素的List集合创建一个Elements对象。 5 、 public Elements(Element... elements) 使用已知元素的可变参数列表创建一个Elements对象。 三、方法详细 1 、 public Elements clone() 克隆 2 、 public String attr(String attributeKey) 根据键得到第一个匹配的元素(匹配即为有这个属性)。 3 、 public boolean hasAttr(String attributeKey) 元素集中存在任何一个元素匹配(有这属性)则返回 true 。 4 、 public Elements attr(String attributeKey, String attributeValue) 将 所有匹配attributeKey键的元素的值设置为attributeValue。 5 、 public Elements removeAttr(String attributeKey) 移除元素集中任何一个匹配的元素 6 、 public Elements addClass(String className) 将className增加到每一个匹配的元素的 class 属性上。 7 、 public Elements removeClass(String className) 从每一个匹配的元素上移除该className 8 、 public Elements toggleClass(String className) 对每一个匹配的元素的 class 属性上进行反转。(有则移除,没有则新增)。 9 、 public boolean hasClass(String className) 检测是否有任何一个匹配的元素在 class 属性有给定的className值。 10 、 public String val() 得到第一个匹配元素的表单的值。 11 、 public Elements val(String value) 对每一个匹配的元素设置表单值。 12 、 public String text() 得到所有匹配元素文本的综合。该方法在某些情况下会得到重复数据。 13 、 public boolean hasText() 检测是否有文本内容 14 、 public String html() 得到所有匹配元素的内部html的综合。 15 、 public String outerHtml() 得到所有匹配元素的外部html的综合。 16 、 public String toString() 得到所有匹配元素的外部html的综合。 17 、 public Elements tagName(String tagName) 更新每个匹配元素的tag name. 如想把每个变成,可以这样:doc.select( "i" ).tagName( "em" ); 18 、 public Elements html(String html) 设置每个匹配元素的内部html。 19 、 public Elements prepend(String html) 将指定html增加到每个匹配元素的内部html开头。 20 、 public Elements append(String html) 将指定html增加到每个匹配元素的内部html末尾。 21 、 public Elements before(String html) 在每个匹配元素的外部html前面插入指定html。 22 、 public Elements after(String html) 在每个匹配元素的外部html后面插入指定html。 23 、 public Elements wrap(String html) 用指定html包装每个匹配的元素。 例如,对于这个html:This is Jsoup ,执行这个包装:doc.select( "b" ).wrap( "" )后就变成:This is jsoup 24 、 public Elements unwrap() 移除匹配的元素但保留他们的内容。示例: 执行 doc.select( "font" ).unwrap() 变成: 25 、 public Elements empty() 清空每个匹配元素的内容。示例: 执行doc.select( "p" ).empty() 变成 26 、 public Elements remove() 从DOM树中移除匹配的元素。示例:Hello there ![]() 执行doc.select( "p" ).remove()后 变成 27 、 public Elements select(String query) 根据query选择器查询匹配的元素集。 28 、 public Elements not(String query) 移除匹配选择器的元素集 返回过滤后的元素集。 29 、 public Elements eq( int index) 根据index得到匹配的元素 30 、 public boolean is(String query) 检测是否有一个元素匹配给定的选择器。 31 、 public Elements parents() 得到匹配元素集的所有父类元素和祖先元素集 32 、 public Element first() 得到第一个匹配的元素 33 、 public Element last() 得到最后一个匹配的元素 34 、 public Elements traverse(NodeVisitor nodeVisitor) 对被查询的元素执行一次深度优先的遍历。 35 、 public int size() 元素集的长度。 36 、 public boolean isEmpty() 检测是否为空 37 、 public boolean contains(Object o) 检测是否包含指定对象 38 、 public Iterator iterator() 得到迭代器对象 39 、 public Object[] toArray() 将元素集转换为数组 40 、 public T[] toArray(T[] a) 41 、 public boolean add(Element element) 新增元素 42 、 public boolean remove(Object o) 移除指定元素 43 、 public boolean containsAll(Collection> c) 参照java中的List或Collection用法. 44 、 public boolean addAll(Collection extends Element> c) 参照java中的List或Collection用法. 45 、 public boolean addAll( int index, Collection extends Element> c) 参照java中的List或Collection用法. 46 、 public boolean removeAll(Collection> c) 参照java中的List或Collection用法. 47 、 public boolean retainAll(Collection> c) 参照java中的List或Collection用法. 48 、 public void clear() 清空元素集 49 、 public Element get( int index) 根据索引得到指定元素 50 、 public Element set( int index, Element element) 根据索引设置指定元素 51 、 public void add( int index, Element element) 在指定位置增加元素 52 、 public Element remove( int index) 移除指定位置的元素 53 、 public int indexOf(Object o) 得到指定元素的索引(第一次出现的位置) 54 、 public int lastIndexOf(Object o) 得到指定元素最后一次出现的位置。 55 、 public ListIterator listIterator() 具体参照List 56 、 public ListIterator listIterator( int index) 具体参照List 57 、 public List subList( int fromIndex, int toIndex) 根据起始点得到子集 第一种方法解析html public void schoolGrab() throws IOException { // 根据地址,获取网页中相应列表的URL和text()值 Document document = null; String filePath = "E:/school.txt"; WriteToTxt writeToTxt = new WriteToTxt(); writeToTxt.isExitsFile(filePath); PrintStream ps = new PrintStream(new FileOutputStream(new File(filePath))); try { document = Jsoup.connect("http://gaokao.chsi.com.cn/sch/search.do?start=0") .get(); } catch (IOException e) { e.printStackTrace(); } Element element = document.body(); //System.out.println(element); //Elements ths = document.select("th").removeAttr("th"); Elements ths = document.select("th"); System.out.println(ths.size()); //System.out.println(ths); Elements tds = document.select("td"); //System.out.println(tds); //Elements td = doc.getElementsByAttributeValue("class", "nlctd1");//后续有可能用到,留下以备不时之需 //解析html中的标题头 形成javaBean schoolIntroduction for (Element e : ths) { //调用写入文件的方法,写入到文件中 String text = e.getElementsByTag("th").text().trim(); ps.print(text);// 往文件里写入字符串 ps.print("\r\t"); System.out.println(text); ps.println(); //解析td标签 int flag = 1; for(Element e : tds) { //调用写入文件的方法,写入到文件中 String text = e.getElementsByTag("td").text().trim(); ps.print(text);// 往文件里写入字符串 ps.print("\r\t"); System.out.println(text); if(flag%8==0){ ps.println(); } flag ++; } } } 第二种 FileWriter writer = null; int flag = 1; try { // 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件 writer = new FileWriter(filePath, true); for(Element e : tds) { //调用写入文件的方法,写入到文件中 String text = e.getElementsByTag("td").text().trim(); writer.write(text); writer.write("\r\t"); if(flag%8==0){ writer.write("\r\n"); } flag ++; System.out.println(text); } } catch (IOException e) { e.printStackTrace(); } finally { try { if(writer != null){ writer.close(); } } catch (IOException e) { e.printStackTrace(); } } } |