网络爬虫之JSOUP
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() {
// 从优酷下载包含视频结果的html
Document 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获取html
try {
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的更多相关文章
- 网络爬虫技术Jsoup——爬到一切你想要的(转)
转自:http://blog.csdn.net/ccg_201216323/article/details/53576654 本文由我的微信公众号(bruce常)原创首发, 并同步发表到csdn博客, ...
- 网络爬虫技术Jsoup
Jsoup介绍:Jsoup 是一个 Java 的开源HTML解析器,可直接解析某个URL地址.HTML文本内容 Jsoup主要有以下功能: 1. 从一个URL,文件或字符串中解析HTML 2. 使用D ...
- Android网络爬虫程序(基于Jsoup)
摘要:基于 Jsoup 实现一个 Android 的网络爬虫程序,抓取网页的内容并显示出来.写这个程序的主要目的是抓取海投网的宣讲会信息(公司.时间.地点)并在移动端显示,这样就可以随时随地的浏览在学 ...
- iOS—网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据
网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...
- Atitit 网络爬虫与数据采集器的原理与实践attilax著 v2
Atitit 网络爬虫与数据采集器的原理与实践attilax著 v2 1. 数据采集1 1.1. http lib1 1.2. HTML Parsers,1 1.3. 第8章 web爬取199 1 2 ...
- Java开发、网络爬虫、自然语言处理、数据挖掘简介
一.java开发 (1) 应用开发,即Java SE开发,不属于java的优势所在,所以市场占有率很低,前途也不被看好. (2) web开发,即Java Web开发,主要是基于自有或第三方成熟框架的系 ...
- 开源的49款Java 网络爬虫软件
参考地址 搜索引擎 Nutch Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. Nutch的创始人是Doug Cutting, ...
- iOS开发——网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据
网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...
- crawler4j:轻量级多线程网络爬虫实例
crawler4j是Java实现的开源网络爬虫.提供了简单易用的接口,可以在几分钟内创建一个多线程网络爬虫. 下面实例结合jsoup(中文版API),javacvs 爬取自如租房网(http://sh ...
随机推荐
- LSTM细节
为什么使用tanh? 为了克服梯度消失问题,我们需要一个二阶导数在趋近零点之前能维持很长距离的函数.tanh是具有这种属性的合适的函数. 为什么要使用Sigmoid? 由于Sigmoid函数可以输出0 ...
- Spring Cloud云服务架构 - commonservice-eureka 项目构建过程
我们针对于HongHu cloud的eureka项目做以下构建,整个构建的过程很简单,我会将每一步都构建过程记录下来,希望可以帮助到大家: 1. 创建一个名为particle-common-eurek ...
- iterator删除元素
总结 在需要的删除等操作时,不能使用简单的foreach,因为其底层依然用的是Iterator,但是调用的是集合中的remove方法. 使用迭代器对象调用其中的remove方法,以保证线程同步.
- 使用SharpZIpLib写的压缩解压操作类
使用SharpZIpLib写的压缩解压操作类,已测试. public class ZipHelper { /// <summary> /// 压缩文件 /// </summary&g ...
- event.currentTarget
https://api.jquery.com/event.currentTarget/ event.currentTargetReturns: Element Description: The cur ...
- MVC的各个部分都有那些技术来实现?如何实现?
MVC是Model-View-Controller的简写. Model 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), View 是应用的表示面(由JSP页面产生), Control ...
- Nor Flash芯片特性分析
Nor Flash是Intel在1988年推出的非易失闪存芯片,可随机读取,擦写时间长,可以擦写1~100W次,支持XIP(eXecute In Place). 本文以JS28F512M29EWH为例 ...
- Django学习之Cookie和Session
一.Cookie 1.Cookie的由来 2.什么是Cookie 3.Cookie的原理 4.查看Cookie 二.Django中操作Cookie 1.获取Cookie 2.设置Cookie 3.删除 ...
- Visual Studio Code 折叠代码快捷键
为了快速阅读不熟悉的代码, 最好可以打开一个文件能先将具体实现折叠起来的,进行一个大概的认识,vscode中有这些折叠快捷键: ctrl+shift+[是折叠 ctrl+k ctrl+0 是折叠全部 ...
- ERROR 1045 (28000): Access denied for user 'xxx'@'localhost' (using password: YES)
# Bug描述 今天周末,在家里学点新技术,虽然公司分配的任务没有完成(滑稽滑稽) 我先创建了一个mysql数据库,用root用户创建一个新用户,毕竟项目中使用root是非常危险的,尤其是我这样的实 ...