分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

网络爬虫之JSOUP

发布时间:2023-09-06 01:49责任编辑:蔡小小关键词:爬虫

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved