java平台利用jsoup开发包,抓取优酷视频播放地址与图片地址等信息。

/********************************************************************************************

* author:[email protected]大钟

* E-mail:[email protected]

http://blog.csdn.net/conowen

* 注:本文为原创。仅作为学习交流使用,转载请标明作者及出处。

********************************************************************************************/

一: 项目目的

近期项目设计到网联网视频採集聚合。写了一个关于互联网视频的信息爬虫的小程序,以youku在线视频站点为例,实现一个java平台下的应用程序,动态抓取互联网视频信息保存到本地xml文件,构建一个多媒体播放源中心。

二:项目第三方库:

1、jsoup (HTML代码解析器)

jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。

它提供了一套很省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。

jsoup的主要功能例如以下:

·从一个URL,文件或字符串中解析HTML;

·使用DOM或CSS选择器来查找、取出数据。

·可操作HTML元素、属性、文本;

jsoup是基于MIT协议公布的。可放心使用于商业项目。

官方地址:http://jsoup.org/

2、jdom (XML构建于解析工具)

通过jdom,能够非常easy地构建符合规范的xml文件,而且,jdom提供对xml文件的高速解析。

官方地址:http://jdom.org/

三:开发大体过程:

如youku(优酷)在线视频播放站点,本身就做了互联网视频聚合,就是旗下的soku。下面就已soku为例

如电视剧所相应的url地址为:http://www.soku.com/channel/teleplaylist_0_0_0_1_1.html

通过浏览器查看这个页面的HTML代码分析可知

<div class="item">
			<ul class="p pv">
				<li class="p_link"><a href="/detail/show/XMzk3MTk2" target="_blank" title="叛逃" _log_pos="1"  _log_directpos="1"></a></li>
				<li class="p_thumb"><img original="http://g1.ykimg.com/05160000532655E067379F61EC00286C" alt="叛逃"></li>
				<li class="p_status"><span class="status">正片</span><span class="bg"></span></li>

				<li class="p_ishd"><span class="ico__SD" title="超清"></span></li>
				<li class="p_title"><a href="/detail/show/XMzk3MTk2" title="叛逃" target="_blank" _log_pos="1"  _log_directpos="2">叛逃</a></li>
				<li class="p_actor"><label>主演:</label><a href='/v?keyword=%E9%99%88%E5%B1%95%E9%B9%8F' title='陈展鹏' target='_blank' _log_pos='1'  _log_directpos='3'>陈展鹏</a> / <a href='/v?keyword=%E5%90%B4%E5%8D%93%E7%BE%B2' title='吴卓羲' target='_blank' _log_pos='1'  _log_directpos='3'>吴卓羲</a> / <a href='/v?keyword=%E9%99%88%E8%8C%B5%E5%AA%BA' title='陈茵媺' target='_blank' _log_pos='1'  _log_directpos='3'>陈茵媺</a> </li>
				<li class="p_desc" >香港作为国际大都会,随时有可能会受到恐怖突击。为了防止境内可能出现的恐怖活动,反恐特勤队于2009...</li>
				<li class="p_rating"><span class="ranking">9.2</span>分</li>
				<li class="p_panels">

		<div class='linkpanels site14' style='display:none;'>

			<div class="mask">
				<div class="ico__loading_32"></div>
			</div>

			<div class="panel_15">
				<ul class="linkpanel">
				<li><a href='http://v.youku.com/v_show/id_XNjg2NTcyODI0.html' target='_blank' _log_pos='1'  _log_directpos='4'>1</a></li>
					<li><a href='http://v.youku.com/v_show/id_XNjg3MDU2NzUy.html' target='_blank' _log_pos='1'  _log_directpos='4'>2</a></li>
					<li><a href='http://v.youku.com/v_show/id_XNjg3NDk4NjQ0.html' target='_blank' _log_pos='1'  _log_directpos='4'>3</a></li>
					<li><a href='http://v.youku.com/v_show/id_XNjg3OTc5MjUy.html' target='_blank' _log_pos='1'  _log_directpos='4'>4</a></li>

							<li class="mhandle" title="显示所有"><span>...</span></li>

					<li><a href='http://v.youku.com/v_show/id_XNjk4ODk2MjI4.html' target='_blank' _log_pos='1'  _log_directpos='4'>21</a></li>
					<li><a href='http://v.youku.com/v_show/id_XNjk5Mzc4ODky.html' target='_blank' _log_pos='1'  _log_directpos='4'>22</a></li>
					<li><a href='http://v.youku.com/v_show/id_XNjk5Nzk4NjEy.html' target='_blank' _log_pos='1'  _log_directpos='4'>23</a><em class="ico__newpgm"></em></li>
					<li><a href='http://v.youku.com/v_show/id_XNzAwMjQ2ODEy.html' target='_blank' _log_pos='1'  _log_directpos='4'>24</a><em class="ico__newpgm"></em></li>

				<li class="catahandle" ><span qwindow_key="99299_14"><em>显示所有</em></span></li>

				</ul>
				<div class="clear"></div>
			</div>

			<div class="overlay_show" style="display: none; ">
				<ul>
					<li><a target="_blank" href="http://v.youku.com/v_show/id_XNjg2NTcyODI0.html" _log_pos='1'  _log_directpos='4' >1</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjg3MDU2NzUy.html" _log_pos='1'  _log_directpos='4' >2</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjg3NDk4NjQ0.html" _log_pos='1'  _log_directpos='4' >3</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjg3OTc5MjUy.html" _log_pos='1'  _log_directpos='4' >4</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjg4Mzk0MjA0.html" _log_pos='1'  _log_directpos='4' >5</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjg5Njg2MTMy.html" _log_pos='1'  _log_directpos='4' >6</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjkwMTUxMjg0.html" _log_pos='1'  _log_directpos='4' >7</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjkwNjE4ODc2.html" _log_pos='1'  _log_directpos='4' >8</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjkxMDYyMDY4.html" _log_pos='1'  _log_directpos='4' >9</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjkxNTA1NDc2.html" _log_pos='1'  _log_directpos='4' >10</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjkyNzk3ODEy.html" _log_pos='1'  _log_directpos='4' >11</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjkzMjQ5MjU2.html" _log_pos='1'  _log_directpos='4' >12</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjkzNzE1ODQ0.html" _log_pos='1'  _log_directpos='4' >13</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjk0MTQ1NDE2.html" _log_pos='1'  _log_directpos='4' >14</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjk0NTk4NjU2.html" _log_pos='1'  _log_directpos='4' >15</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjk1NzkwNDky.html" _log_pos='1'  _log_directpos='4' >16</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjk2MjE0ODAw.html" _log_pos='1'  _log_directpos='4' >17</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjk2NzA3OTAw.html" _log_pos='1'  _log_directpos='4' >18</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjk3MTQ3NDg0.html" _log_pos='1'  _log_directpos='4' >19</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjk3NjAyMzU2.html" _log_pos='1'  _log_directpos='4' >20</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjk4ODk2MjI4.html" _log_pos='1'  _log_directpos='4' >21</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjk5Mzc4ODky.html" _log_pos='1'  _log_directpos='4' >22</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNjk5Nzk4NjEy.html" _log_pos='1'  _log_directpos='4' >23</a></li><li><a target="_blank" href="http://v.youku.com/v_show/id_XNzAwMjQ2ODEy.html" _log_pos='1'  _log_directpos='4' >24</a></li>
		 		</ul>
				<div class="clear"></div>
			</div>

		</div> <!-- linkpanels end -->

		<div class='linkpanels site1' style='display:;'>

			<div class="mask">
				<div class="ico__loading_32"></div>
			</div>

			<div class="panel_15">
				<ul class="linkpanel">
				<li><a href='http://www.tudou.com/albumplay/h_qzeM93b4o/C08DUfUmLQ8.html' target='_blank' _log_pos='1'  _log_directpos='4'>1</a></li>
					<li><a href='http://www.tudou.com/albumplay/h_qzeM93b4o/9k94iBLitvc.html' target='_blank' _log_pos='1'  _log_directpos='4'>2</a></li>
					<li><a href='http://www.tudou.com/albumplay/h_qzeM93b4o/DtZl97kKHJ8.html' target='_blank' _log_pos='1'  _log_directpos='4'>3</a></li>
					<li><a href='http://www.tudou.com/albumplay/h_qzeM93b4o/bOowUNpVpps.html' target='_blank' _log_pos='1'  _log_directpos='4'>4</a></li>

							<li class="mhandle" title="显示所有"><span>...</span></li>

					<li><a href='http://www.tudou.com/albumplay/h_qzeM93b4o/eIuEWbGBlZo.html' target='_blank' _log_pos='1'  _log_directpos='4'>21</a></li>
					<li><a href='http://www.tudou.com/albumplay/h_qzeM93b4o/04MteDKPh0k.html' target='_blank' _log_pos='1'  _log_directpos='4'>22</a></li>
					<li><a href='http://www.tudou.com/albumplay/h_qzeM93b4o/j3No8CjvPMU.html' target='_blank' _log_pos='1'  _log_directpos='4'>23</a><em class="ico__newpgm"></em></li>
					<li><a href='http://www.tudou.com/albumplay/h_qzeM93b4o/DZqhSzIue7k.html' target='_blank' _log_pos='1'  _log_directpos='4'>24</a><em class="ico__newpgm"></em></li>

				<li class="catahandle" ><span qwindow_key="99299_1"><em>显示所有</em></span></li>

				</ul>
				<div class="clear"></div>
			</div>

			<div class="overlay_show" style="display: none; ">
				<ul>
					<li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/C08DUfUmLQ8.html" _log_pos='1'  _log_directpos='4' >1</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/9k94iBLitvc.html" _log_pos='1'  _log_directpos='4' >2</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/DtZl97kKHJ8.html" _log_pos='1'  _log_directpos='4' >3</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/bOowUNpVpps.html" _log_pos='1'  _log_directpos='4' >4</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/17j0DZpn1ks.html" _log_pos='1'  _log_directpos='4' >5</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/L9BfyEe2Lnc.html" _log_pos='1'  _log_directpos='4' >6</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/wC0wkJ06oig.html" _log_pos='1'  _log_directpos='4' >7</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/t1eKauFslM8.html" _log_pos='1'  _log_directpos='4' >8</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/cpA0-6Eju_M.html" _log_pos='1'  _log_directpos='4' >9</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/kO6GYIebudU.html" _log_pos='1'  _log_directpos='4' >10</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/f9WyMO1cvAU.html" _log_pos='1'  _log_directpos='4' >11</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/ZXJJ718tUMM.html" _log_pos='1'  _log_directpos='4' >12</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/b_3VAZzRLxk.html" _log_pos='1'  _log_directpos='4' >13</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/m_V42BUl10M.html" _log_pos='1'  _log_directpos='4' >14</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/E6WlWOITEn0.html" _log_pos='1'  _log_directpos='4' >15</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/oDss8E8Ca1k.html" _log_pos='1'  _log_directpos='4' >16</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/HYY6zgJgsjY.html" _log_pos='1'  _log_directpos='4' >17</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/qk2asOj0eLE.html" _log_pos='1'  _log_directpos='4' >18</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/SejnSBUxZ0o.html" _log_pos='1'  _log_directpos='4' >19</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/K4FAUFU8_eM.html" _log_pos='1'  _log_directpos='4' >20</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/eIuEWbGBlZo.html" _log_pos='1'  _log_directpos='4' >21</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/04MteDKPh0k.html" _log_pos='1'  _log_directpos='4' >22</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/j3No8CjvPMU.html" _log_pos='1'  _log_directpos='4' >23</a></li><li><a target="_blank" href="http://www.tudou.com/albumplay/h_qzeM93b4o/DZqhSzIue7k.html" _log_pos='1'  _log_directpos='4' >24</a></li>
		 		</ul>
				<div class="clear"></div>
			</div>

		</div> <!-- linkpanels end -->

<!--playarea end-->

<div class="playarea">
	<div class="pgm-source">
		<div class="source source_one">

			<label>播放源:</label>

				<span name="土豆网" id="site1" sv="-9976.0">
					<a href="http://www.tudou.com/albumplay/h_qzeM93b4o/C08DUfUmLQ8.html"  status="更新至24集" target="_blank" speed="0" stypename="超清" stype="SD" title="土豆网-更新至24集" _log_pos="1"  _log_directpos="5">
						<img src="http://static.soku.com/v1.0.0749/soku/inthesky/img/favicon/tudou.png"  />
					</a>
				</span>

				<span name="优酷网" id="site14" sv="-9976.0">
					<a href="http://v.youku.com/v_show/id_XNjg2NTcyODI0.html"  status="更新至24集" target="_blank" speed="0" stypename="超清" stype="SD" title="优酷网-更新至24集" _log_pos="1"  _log_directpos="5">
						<img src="http://static.soku.com/v1.0.0749/soku/inthesky/img/favicon/youku.png"  />
					</a>
				</span>

		</div>
	</div>
</div>

<!--playarea end-->

				</li>
			</ul>
		</div>

就能够获得此视频的名称。封面图片地址,更新的状态,各个播放源的地址。

获取视频信息:

1、jsoup解析演示:

获取一个页面的内容。能够採用下面方式

Document doc = Jsoup.connect("http://example.com/").get();

得到doc就能够进行解析操作了。

当然,也能够设置一些连接參数,如浏览器userAgent,超时时间,页面内存大小等等。

对页面的解析就如同对xml解析一样。非常easy。通过tab或者class标签就能够获取对应的内容了。

2、jsoup抓取youku优酷视频信息

	public void getVideoInfo(String pageUrl) {// 一页调用一次

		try {
			doc = Jsoup.connect(pageUrl).maxBodySize(1024 * 1024 * 10)
					.timeout(6000).get();
			// Added a maximum body response size to Jsoup.Connection, to
			// prevent running out of memory when trying to read extremely
			// large
			// documents. The default is 1MB.
		} catch (IOException e) {
			// TODO Auto-generated catch block
			getVideoInfo(pageUrl);
			System.out.println("connect error");
			e.printStackTrace();
		}

		divs_info = doc.getElementsByClass("p_link");// 视频专辑url,如电视剧

		if (divs_info != null) {

			if (divs_info.size() <= 0) {
				divs_info = doc.getElementsByClass("v_link");// 视频播放url。如资讯

			}

			urls = divs_info.select("a[href]");

			if (null != urls) {
				int i = 0;

				for (Element urlElement : urls) {

					videoTitles.add(urlElement.attr("title"));

					videoUrl.add(urlElement.attr("abs:href"));
					i++;

				}
			}

		}
		divs_thumbs = doc.getElementsByClass("p_thumb");// 获取专辑图片
		if (divs_thumbs != null) {

			thumbs = divs_thumbs.select("img[original]");
			if (thumbs.size() <= 0) {
				divs_thumbs = doc.getElementsByClass("v_thumb");
				thumbs = divs_thumbs.select("img[original]");
			}
			if (null != thumbs) {
				int i = 0;
				for (Element thumb : thumbs) {

					videoThumbUrls.add(thumb.attr("abs:original"));

					i++;

				}

			}
		}
		divs_pgm_source = doc.getElementsByClass("pgm-source");// 获取更新情况
		// divs_pgm_source.select(query)

		if (divs_pgm_source != null) {
			for (Element thumb1 : divs_pgm_source) {
				sourceId = thumb1.select("span");
				sourceUrl = thumb1.select("a");
				List<String> videoSourceStatus = null;
				List<String> videoSourceUrl = null;
				List<String> videoSourceId = null;//保存获取的数据,以供构建xml文件

				if (null != sourceId) {
					videoSourceId = new ArrayList<String>();
					for (Element thumb2 : sourceId) {

						videoSourceId.add(thumb2.attr("id"));

					}
					videoSourceIdList.add(videoSourceId);

				}
				if (null != sourceUrl) {
					videoSourceStatus = new ArrayList<String>();
					for (Element thumb2 : sourceUrl) {

						videoSourceStatus.add(thumb2.attr("status"));

					}
					videoSourceStatusList.add(videoSourceStatus);

				}

				if (null != sourceUrl) {
					videoSourceUrl = new ArrayList<String>();
					for (Element thumb2 : sourceUrl) {

						videoSourceUrl.add(thumb2.attr("href"));

					}
					videoSourceUrlList.add(videoSourceUrl);

				}

			}

		}
		try {
			Thread.sleep(2000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

四、构建视频xml信息文件:

1、创建xml文件

xmlHelper.createXml(str, videoTitles, videoUrl, videoThumbUrls,
						videoSourceIdList, videoSourceStatusList,
						videoSourceUrlList, pageNum); // 创建xml

2、创建xml文件过程

public void createXml(String fileName, List<String> videoTitles,
			List<String> videoUrl, List<String> videoThumbUrls,
			List<List<String>> videoSourceIdList,
			List<List<String>> videoSourceStatusList,
			List<List<String>> videoSourceUrlList, int pageNum) {

		// 创建根节点
		Element root = new Element("videoInfo");
		// 创建每一页的节点
		Element pageElement = new Element("page");
		//设置页码
		pageElement.setAttribute("page", "" + pageNum);

		Document Doc = new Document(root);

		for (int i = 0; i < videoTitles.size(); i++) {

			// 创建节点 videoId
			Element VideoIdElement = new Element("videoId");
			// 给 videoId 节点加入属性 id;
			VideoIdElement.setAttribute("id", ""
					+ (i + 1 + (pageNum - 1) * videoTitles.size()));

			// 填写视频信息的值
			VideoIdElement.addContent(new Element("videoTitle")
					.setText(videoTitles.get(i)));
			VideoIdElement.addContent(new Element("videoUrl").setText(videoUrl
					.get(i)));
			VideoIdElement.addContent(new Element("videoThumbUrls")
					.setText(videoThumbUrls.get(i)));
			for (int j = 0; j < videoSourceIdList.get(i).size(); j++) {
				Element sourceElement = new Element("source");
				sourceElement.setAttribute("id", ""
						+ videoSourceIdList.get(i).get(j));
				sourceElement.setAttribute("status", ""
						+ videoSourceStatusList.get(i).get(j));
				sourceElement.setAttribute("url", ""
						+ videoSourceUrlList.get(i).get(j));
				VideoIdElement.addContent(sourceElement);
			}
			// 加入每个子视频到每一页上面
			pageElement.addContent(VideoIdElement);

		}
		// 加入每一页的视频到根节点上面
		root.addContent(pageElement);
		Format format = Format.getCompactFormat();
		format.setEncoding("utf-8"); // setEncoding 设置编码
		format.setIndent("	");
		XMLOutputter XMLOut = new XMLOutputter(format);

		try {
			XMLOut.output(Doc, new FileOutputStream(fileName));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

注意:利用jdom构建xml时,有一点要注意的就是,不设置的话,jdom构建的xml不会换行。导致xml文件异常乱。难以看懂。

能够採用下面设置就可以实现xml文件的换行操作。

Format format = Format.getCompactFormat();
		format.setEncoding("utf-8");
		format.setIndent("	");

解析效果图每一页大概所需时间为2~3s。页面比較大。是网络情况而定。

构建出来的xml文件例如以下

<?xml version="1.0" encoding="utf-8"?>
<videoInfo>
	<page page="1">
		<videoId id="1">
			<videoTitle>来自星星的你</videoTitle>
			<videoUrl>http://www.soku.com/detail/show/XMTEyNDE0NA==</videoUrl>
			<videoThumbUrls>http://g3.ykimg.com/0516000052AD289A675839358A07B6AA</videoThumbUrls>
			<source id="site19" status="21集全" url="http://www.iqiyi.com/v_19rrhd5t9s.html" />
			<source id="site17" status="21集全" url="http://www.letv.com/ptv/vplay/2234148.html" />
			<source id="site14" status="更新至17集" url="" />
		</videoId>
		<videoId id="2">
			<videoTitle>食为奴</videoTitle>
			<videoUrl>http://www.soku.com/detail/show/XMTA5MTQ1Mg==</videoUrl>
			<videoThumbUrls>http://g4.ykimg.com/0516000052F4A2C56758390A8D0C4E55</videoThumbUrls>
			<source id="site14" status="更新至22集" url="http://v.youku.com/v_show/id_XNjcxNTA0Mzg0.html" />
			<source id="site1" status="更新至22集" url="http://www.tudou.com/albumplay/mXTEnVluN7k/jeB4vVjU13s.html" />
		</videoId>
		<videoId id="3">
			<videoTitle>屌丝男士</videoTitle>
			<videoUrl>http://www.soku.com/detail/show/XMTA4MzkwNA==</videoUrl>
			<videoThumbUrls>http://g1.ykimg.com/05160000519310F4670C4A1AE002FEB1</videoThumbUrls>
			<source id="site6" status="7集全" url="http://tv.sohu.com/20121010/n354554959.shtml" />
		</videoId>
		<videoId id="4">
			<videoTitle>屌丝男士 第三季</videoTitle>
			<videoUrl>http://www.soku.com/detail/show/XMTE0NzU2OA==</videoUrl>
			<videoThumbUrls>http://g4.ykimg.com/051600005305D18E6758397D8206CC34</videoThumbUrls>
			<source id="site6" status="更新至3集" url="http://tv.sohu.com/20140225/n395573773.shtml" />
		</videoId>
时间: 2024-10-13 11:53:44

java平台利用jsoup开发包,抓取优酷视频播放地址与图片地址等信息。的相关文章

用 Java 抓取优酷、土豆等视频

1. [代码][JavaScript]代码  import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements; /*** 视频工具类* @author sunlightcs* 2011-4-6* http://hi.juziku.com/sunlightcs/*/public class VideoUtil {       

selenium爬取优酷页面并下载图片

1 from selenium import webdriver 2 import requests 3 driver = webdriver.Chrome() 4 #打开优酷 5 driver.get("http://www.youku.com") 6 #点开优酷片库 7 driver.find_element_by_xpath("//*[@id='m_2544']/div/ul/li[6]/span[1]/a").click() 8 #获取所有img元素 9 l

freecms使用jsoup和quartz抓取其他网站内容

这里提到了freecms,其实抓取和freecms没什么关系,主要还是靠jsoup jsoup里提供了html解析和读取的方法,集成了httprequest,可以从网络和本地读取,支持非闭合标签等. csdn中有比较详细的介绍 http://blog.csdn.net/column/details/jsoup.html 一般抓取页面的内容,都是后台进行的,多数是周期抓取,那么肯定要有调度的方法,包括 Timer,Scheduler, Quartz 以及 JCron Tab等等.这篇文件介绍和对比

【JAVA系列】Google爬虫如何抓取JavaScript的?

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[JAVA系列]Google爬虫如何抓取JavaScript的? 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 我们测试了谷歌爬虫是如何抓取 JavaScript,下面就是我们从中学习到的知识. 认为 Google 不能处理 JavaScript ?再想想吧.Audette Audette 分享了一系列测试结果,他

如何利用Python网络爬虫抓取微信朋友圈的动态(上)

今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌,小编在网上找到了第三方工具,它可以将朋友圈进行导出,之后便可以像我们正常爬虫网页一样进行抓取信息了. [出书啦]就提供了这样一种服务,支持朋友圈导出,并排版生成微信书.本文的主要参考资料来源于这篇博文:https://www.cnblogs.com/sheng-jie/p/7776495.html

如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例

前几天给大家分享了利用Python网络爬虫抓取微信朋友圈的动态(上)和利用Python网络爬虫爬取微信朋友圈动态--附代码(下),并且对抓取到的数据进行了Python词云和wordart可视化,感兴趣的伙伴可以戳这篇文章:利用Python词云和wordart可视化工具对朋友圈数据进行可视化. 今天我们继续focus on微信,不过这次给大家带来的是利用Python网络爬虫抓取微信好友总数量和微信好友男女性别的分布情况.代码实现蛮简单的,具体的教程如下. 相信大家都知道,直接通过网页抓取微信的数据

利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化

前几天给大家分享了如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,感兴趣的小伙伴可以点击链接进行查看.今天小编给大家介绍如何利用Python网络爬虫抓取微信好友的省位和城市,并且将其进行可视化,具体的教程如下. 爬取微信好友信息,不得不提及这个itchat库,简直太神奇了,通过它访问微信好友基本信息可谓如鱼得水.下面的代码是获取微信好友的省位信息: 程序运行之后,需要扫描进行授权登录,之后在Pycharm的控制台上会出现如下图的红色提示,这些红色的字体并不是我们通常遇到的Py

利用Python网络爬虫抓取微信好友的签名及其可视化展示

前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化,感兴趣的小伙伴可以点击进去看看详情,内容方面不是很难,即使你是小白,也可以通过代码进行实现抓取.今天,小编继续给大家分享如何利用Python网络爬虫抓取微信好友的签名及其可视化展示,具体的教程如下所示. 1.代码实现还是基于itchat库,关于这个神奇的库,在之前的文章中

c#实现抓取高清美女妹纸图片

代码如下: private void DoFetch(int pageNum) { ThreadPool.QueueUserWorkItem(_ => { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(" 美女摄影?page=" + pageNum); request.Credentials = System.Net.CredentialCache.DefaultCredentials; HttpWebRes