JSOUP中文文档:http://www.open-open.com/jsoup/
推荐博客:http://www.cnblogs.com/jycboy/p/jsoupdoc.html
从一个URL加载一个Document
Document doc = Jsoup.connect("http://example.com") ?.data("query", "Java") ?.userAgent("Mozilla") ?.cookie("auth", "token") ?.timeout(3000) ?.post();
使用DOM方法来遍历一个文档
File input = new File("/tmp/input.html");Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");Element content = doc.getElementById("content");Elements links = content.getElementsByTag("a");for (Element link : links) { ???String linkHref = link.attr("href"); ???String linkText = link.text();}
查找元素
getElementById(String id)getElementsByTag(String tag)getElementsByClass(String className)getElementsByAttribute(String key) (and related methods
元素数据
attr(String key)获取属性attr(String key, String value)设置属性attributes()获取所有属性id(), className() and classNames()text()获取文本内容text(String value) 设置文本内容html()获取元素内HTMLhtml(String value)设置元素内的HTML内容
使用选择器语法来查找元素
Elements links = doc.select("a[href]"); //带有href属性的a元素Elements pngs = doc.select("img[src$=.png]");//扩展名为.png的图片Element masthead = doc.select("div.masthead").first(); //class等于masthead的div标签Elements resultLinks = doc.select("h3.r > a"); //在h3元素之后的a元素
如何找到优酷网视频的URL的连接地址?
视频的下面 有“ 分享 ”或 “站外引用 ”或是 贴到博客或BBS ,如果有点下,然后复制FALSH地址,在空间里写日志,点插入flash选项,加入flash的地址就可以了。
代码示例:
功能:使用JSoup爬取连接地址
import java.io.IOException;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;public class OnlineProductDownload {public void demo1() {// 从优酷下载包含视频结果的htmlDocument doc = getHtmlByName("冷然之天秤");try {//选择第一个结果Element element = doc.select("div.s_inform").first();// 获取播放源,不是优酷本站的返回(优酷可能会跳转到其他网站,如:爱奇艺)Element playSource = element.select("div.pos_area span").first();if (playSource.text() != "优酷") {return;}//每个li一集(海贼王:第一集、第二集)Elements li_Elements = element.select("ul.clearfix li");for (Element li : li_Elements) {// 获取第几集Element span = li.getElementsByTag("span").first();String text = span.text();// 获取每集详情的url(并不是视频的真实url)Element a = li.getElementsByTag("a").first();String href = a.attr("href");// 根据href获取详情网页文本doc = getHtmlTextByUrl(href);//查找实际结果标签Element sourceLi = doc.select("ul.fn-share-code li").first();// 根据doc获取播放插件. 如:// <iframe src=‘http://player.youku.com/embed/XMzUwNjM1OTA0MA==‘></iframe>Element input = sourceLi.getElementsByTag("input").first();String value = input.attr("value");System.out.println(text + value);}// http://v.youku.com/v_show/id_XMzUwNjM1OTA0MA==.html} catch (Exception e) {e.printStackTrace();}}// 功能:使用优酷的搜库来搜索视频,并根据名称获取网页文本 如:海贼王public Document getHtmlByName(String name) {if (name.isEmpty() || name.length() <= 0) {return null;}// 拼接URL 优酷搜索形式:http://www.soku.com/search_video/q_海贼王String url = "http://www.soku.com/search_video/q_";try {//url编码:%E6%B5%B7%E8%B4%BC%E7%8E%8B=海贼王String encodeStr = URLEncoder.encode(name, "utf-8");url = url + encodeStr;} catch (UnsupportedEncodingException e1) {e1.printStackTrace();}// 通过url获取htmltry {Document doc = Jsoup.connect(url).get();return doc;} catch (IOException e) {e.printStackTrace();}return null;}// 根据url从网络获取网页文本public Document getHtmlTextByUrl(String url) {Document doc = null;try {//拼接成完整的路径String str = "http:";str = str + url;doc = Jsoup.connect(str).get();} catch (IOException e) {e.printStackTrace();}return doc;}}
网络爬虫之JSOUP
原文地址:https://www.cnblogs.com/zhumengke/p/8858147.html