思路:根据给定URL分析其源码,得到所需的网页内容的位置,制定规则采集或下载之

采集的图片和文字示例:

tags:
tag:brazil
tag:dog
tag:pet
tag:pointyfaceddog
tag:Pets Around the World
imageUrl:http://farm2.staticflickr.com/1241/1050065123_9739d1283a_z.jpg

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection; import org.jsoup.*;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
* @author ZTX
* jsoup下载测试
*/
public class TestSoup {
//待采集网址
private static String url = "http://www.flickr.com/photos/9339954@N03/1050065123/in/photolist-2AMRM6-3JesJx-4n7zTL-4sVi7P-4t3yt6-4Ay5SR-4SV4Dz-57LhgB-5g78Rp-5huiYa-5jmQqP-5qawPz-5qaAFP-5qeRNy-5qf2gd-5qfdSQ-5qfe33-5qfKSf-5wYskN-5XxHra-5YcEX1-64zW7q-66U2Lp-67nNta-6aJgvN-6eFSCL-6fiVqR-6ghPXc-6nFAhA-6oZZso-6uQTsi-6vizoJ-6Dpn3e-6EuENc-6QK6TG-6Z4BBW-7347jr-7347nt-7347ra-7347ta-754FLt-78SRmT-7jdxPt-7vNc4q-h3h9sV-9JA3zQ-h3oJ39-h3gL6w-hrN3DF-ek7Tkt-9JA8ns";
//采集的图片存放路径
private static String imgPath = "./download/img.jpg"; public static void main(String []args){
// 采集和下载
getHTML(url);
downloadImg(getFlickrImgUrl(url),imgPath);
} /**
* @param url
* 根据网址采集网页HTML文字内容
*/
private static void getHTML(String url) {
// 使用jsoup选择器语法,链接传递过来的url,并赋值给Document
Document doc;
try {
doc = Jsoup.connect(url).get();
Element tagsUL = doc.getElementById("thetags");//tags ul
Elements tags =tagsUL.getElementsByTag("li");
System.out.println("tags:");
for(Element i:tags) {
String tag=i.tagName();
System.out.println("tag:"+i.text());
}
} catch (IOException e) {
e.printStackTrace();
} } /**
* 根据图片网址下载图片
* 2013-12-15 20:41:54
* @param realurl
*/
private static void downloadImg(String imageUrl,String imgPath) {
try {
//下载
URL downloadUrl = new URL( imageUrl);
URLConnection uc = downloadUrl.openConnection();
InputStream is = uc.getInputStream();
File file = new File( imgPath);
FileOutputStream out = new FileOutputStream(file);
int i=0;
while ((i=is.read())!=-1) {
out.write(i);
}
is.close();
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 根据网址得到图片URL
* 2013-12-15 20:41:17
* @param url
* @return
* @throws IOException
*/
private static String getFlickrImgUrl(String url) {
Document doc = null;
try {
doc = Jsoup.connect(url).get();
} catch (IOException e) {
e.printStackTrace();
}
String imageUrl = doc
.getElementById("main-photo-container")
.getElementsByTag("img")
.first()
.absUrl("src");
System.out.println("imageUrl:"+imageUrl);
return imageUrl;
}
}

【Jsoup爬取网页内容】的更多相关文章

  1. 如何使用Jsoup爬取网页内容

    前言: 这是一篇迟到很久的文章了,人真的是越来越懒,前一阵用jsoup实现了一个功能,个人觉得和selenium的webdriver原理类似,所以今天正好有时间,就又来更新分享了. 实现场景: 爬取博 ...

  2. java爬取网页内容 简单例子(2)——附jsoup的select用法详解

    [背景] 在上一篇博文java爬取网页内容 简单例子(1)——使用正则表达式 里面,介绍了如何使用正则表达式去解析网页的内容,虽然该正则表达式比较通用,但繁琐,代码量多,现实中想要想出一条简单的正则表 ...

  3. java爬虫爬取网页内容前,对网页内容的编码格式进行判断的方式

    近日在做爬虫功能,爬取网页内容,然后对内容进行语义分析,最后对网页打标签,从而判断访问该网页的用户的属性. 在爬取内容时,遇到乱码问题.故需对网页内容编码格式做判断,方式大体分为三种:一.从heade ...

  4. Jsoup爬取带登录验证码的网站

    今天学完爬虫之后想的爬一下我们学校的教务系统,可是发现登录的时候有验证码.因此研究了Jsoup爬取带验证码的网站: 大体的思路是:(需要注意的是__VIEWSTATE一直变化,所以我们每个页面都需要重 ...

  5. jsoup爬取某网站安全数据

    jsoup爬取某网站安全数据 package com.vfsd.net; import java.io.IOException; import java.sql.SQLException; impor ...

  6. java爬虫入门--用jsoup爬取汽车之家的新闻

    概述 使用jsoup来进行网页数据爬取.jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuer ...

  7. Selenium+PhantomJs 爬取网页内容

    利用Selenium和PhantomJs 可以模拟用户操作,爬取大多数的网站.下面以新浪财经为例,我们抓取新浪财经的新闻版块内容. 1.依赖的jar包.我的项目是普通的SSM单间的WEB工程.最后一个 ...

  8. 使用Jsoup 爬取网易首页所有的图片

    package com.enation.newtest; import java.io.File; import java.io.FileNotFoundException; import java. ...

  9. python的requests模块爬取网页内容

    注意:处理需要用户名密码认证的网站,需要auth字段. # -*- coding:utf-8 -*- import requests headers = { "User-Agent" ...

随机推荐

  1. 嵌入式web server——Goahead移植要点

    前言 在嵌入式设备中,在没有液晶显示的情况下,可以使用web来访问设备,查看设备的运行状态以及进行参数设置,类似于路由器设置.网上有很多关于各种web server的优劣的评论,在此不讨论,只是介绍其 ...

  2. QT UI 使一个QWidget里面的元素自动填充满本QWidget

    使一个QWidget里面的元素自动填充满本QWidget: 对象查看器,右键点击本QWidget,选择"布局",为此QWidget增加一个布局. 如果该QWidget只有一个对象, ...

  3. 在调用Qt库来实现功能过程中的一些总结

    1.对于QTabWidget中tab名字的变化.当其中只有一个&时,Qt Assistant中给出的解释是:If the tab's label contains an ampersand, ...

  4. boost::bind实践

    第一部分源码为基础实践: /*Beyond the C++ Standard Library ( An Introduction to Boost )[CN].chm*/ /*bind的用法*/ #i ...

  5. 17173php招聘

    学历要求:大专工作经历:4年↑薪资待遇:面议工作地点:北京市 资深PHP工程师岗位职责\\\"1.独立负责公司互联网产品的开发与测试2.主导负责相关系统维护,确保系统运行稳定可靠3.主导推动 ...

  6. shell 常用

    /etc/password      用户的 home路径设置 chwon  groupname:username    path_or_file  -R    # 修改文件左右者 chomd

  7. NSURLSession -- 实际开发中运用

    NSURLSession实际请求 iOS9使用http请求方法: 在工程info.plist文件内添加NSAppTransportSecurity键,类型为dictionary 在NSAppTrans ...

  8. TMS IntraWeb 5.4.1.1 for XE6 (适配Intraweb14.0.32)

    文件夹内含有我自己已经编译好的bpl,仅供大家学习使用,请支持正版!!导入ParaInstalarXE6.groupproj后,逐个编译安装即可. 链接:http://pan.baidu.com/s/ ...

  9. Uva_11361 Investigating Div-Sum Property

    题目链接 题意: 在[A,B]区间内找出满足条件的数有多少个. 条件:这个数本身 能够整除K, 且各位数字之和能够整除K. 思路: 数据范围过大2^31 2^31 = 2147483648 ~ 2*1 ...

  10. 10071 - Back to High School Physics

    Problem B Back to High School Physics Input: standard input Output: standard output A particle has i ...