爬虫初识jsoup

学习了几天爬虫,发现jsoup这款工具非常好用。对于初学者解析html文件方便,可以满足简单的要求。首先jsoup要下载jar包,然后配置路径添加外部jar文件。。代码就已我的博客为例。参考jsoup中文API
Elements这个对象提供了一系列类似于DOM的方法来查找元素,抽取并处理其中的数据。具体如下:

getElementById(String id)
getElementsByTag(String tag)
getElementsByClass(String className)
getElementsByAttribute(String key) (and related methods)
Element siblings: siblingElements(), firstElementSibling(), lastElementSibling(); nextElementSibling(), previousElementSibling()
Graph: parent(), children(), child(int index)
元素数据
attr(String key)获取属性attr(String key, String value)设置属性
attributes()获取所有属性
id(), className() and classNames()
text()获取文本内容text(String value) 设置文本内容
html()获取元素内HTMLhtml(String value)设置元素内的HTML内容
outerHtml()获取元素外HTML内容
data()获取数据内容(例如:script和style标签)
tag() and tagName()
操作HTML和文本
append(String html), prepend(String html)
appendText(String text), prependText(String text)
appendElement(String tagName), prependElement(String tagName)
html(String value)

从一个URL加载一个Document

解决方法
使用 Jsoup.connect(String url)方法:

Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();
说明
connect(String url) 方法创建一个新的 Connection,get() 取得和解析一个HTML文件。如果从该URL获取HTML时发生错误,便会抛出 IOException,应适当处理。

Connection 接口还提供一个方法链来解决特殊请求,具体如下:

Document doc = Jsoup.connect("http://example.com")
  .data("query", "Java")
  .userAgent("Mozilla")
  .cookie("auth", "token")
  .timeout(3000)
  .post();
这个方法只支持Web URLs (http和https 协议); 假如你需要从一个文件加载,可以使用 parse(File in, String charsetName) 代替。

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class test {
	public static void main(String[] args) throws IOException
	{
		String url="https://blog.csdn.net/qq_40693171";
		Document doc=Jsoup.connect(url).get();
	//	System.out.print(doc.html());//获取整个页面的html
		Elements links1=doc.select("a");
	//	System.out.println(links1);//将输出系列a开头好求窈窕等等
		Elements links2=doc.select("a[onclick]");
	//	System.out.println(links2);//输出有onclick选项的内容
      //
		Elements links3=doc.select("a[href]");
		System.out.println(links3);//输出a开头且拥有href标签的内容
		//
		Element links4=doc.getElementById("popuLayer_js_q");//;按照id选取,因为id只有一个,所以这个links4为element
		//System.out.print(links4);
		Elements links5=doc.getElementsByClass("panel_body itemlist");//阅读排行
		//System.out.println(links5);输出我博客的阅读排行栏目
		Elements links6=doc.getElementsByTag("script");//按照标签 比如的a  
		/*
		 * 假设要输入所有链接
		 * 上面只是初步选取,仍然不是最终想要的内容
		 */
		
		for(Element link:links3)//遍历数组
		{
			String a1=link.attr("href");//每个元素都有链接的属性href="https" 操作就像是hasmap一样的映射关系。
			System.out.print(a1);//https://blog.csdn.net/qq_40693171
			String a2=link.text();
			System.out.println(a2);//好求窈窕  ***
		}
	}
}

输出:
爬虫初识jsoup_第1张图片


  • 如果对后端、爬虫等感性趣欢迎关注我的个人公众号交流:bigsai
  • 你可能感兴趣的:(#,Java爬虫,爬虫,jsoup)