爬虫初识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开头<a href="https://blog.csdn.net/qq_40693171">好求窈窕</a>等等
		Elements links2=doc.select("a[onclick]");
	//	System.out.println(links2);//输出有onclick选项的内容
      //<a href="https://blog.csdn.net/qq_40693171/article/details/79695414#comments" title="评论次数" οnclick=********>
		Elements links3=doc.select("a[href]");
		System.out.println(links3);//输出a开头且拥有href标签的内容
		//<a href="https://blog.csdn.net/qq_40693171?viewmode=contents"><span onclick
		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 href**>的a  <script src=**>的script标签
		//System.out.println(links6);
		//<script src="https://csdnimg.cn/pubfooter/js/publib_footer-1.0.3.js?v201804111810" type="text/javascript"></script>
		/*
		 * 假设要输入所有链接
		 * 上面只是初步选取,仍然不是最终想要的内容
		 */
		
		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);//好求窈窕  ***
		}
	}
}

输出:
这里写图片描述


  • 如果对后端、爬虫等感性趣欢迎关注我的个人公众号交流:bigsai
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员bigsai

喝杯咖啡压压惊!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值