【Jsoup爬取网页内容】
思路:根据给定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爬取网页内容】的更多相关文章
- 如何使用Jsoup爬取网页内容
前言: 这是一篇迟到很久的文章了,人真的是越来越懒,前一阵用jsoup实现了一个功能,个人觉得和selenium的webdriver原理类似,所以今天正好有时间,就又来更新分享了. 实现场景: 爬取博 ...
- java爬取网页内容 简单例子(2)——附jsoup的select用法详解
[背景] 在上一篇博文java爬取网页内容 简单例子(1)——使用正则表达式 里面,介绍了如何使用正则表达式去解析网页的内容,虽然该正则表达式比较通用,但繁琐,代码量多,现实中想要想出一条简单的正则表 ...
- java爬虫爬取网页内容前,对网页内容的编码格式进行判断的方式
近日在做爬虫功能,爬取网页内容,然后对内容进行语义分析,最后对网页打标签,从而判断访问该网页的用户的属性. 在爬取内容时,遇到乱码问题.故需对网页内容编码格式做判断,方式大体分为三种:一.从heade ...
- Jsoup爬取带登录验证码的网站
今天学完爬虫之后想的爬一下我们学校的教务系统,可是发现登录的时候有验证码.因此研究了Jsoup爬取带验证码的网站: 大体的思路是:(需要注意的是__VIEWSTATE一直变化,所以我们每个页面都需要重 ...
- jsoup爬取某网站安全数据
jsoup爬取某网站安全数据 package com.vfsd.net; import java.io.IOException; import java.sql.SQLException; impor ...
- java爬虫入门--用jsoup爬取汽车之家的新闻
概述 使用jsoup来进行网页数据爬取.jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuer ...
- Selenium+PhantomJs 爬取网页内容
利用Selenium和PhantomJs 可以模拟用户操作,爬取大多数的网站.下面以新浪财经为例,我们抓取新浪财经的新闻版块内容. 1.依赖的jar包.我的项目是普通的SSM单间的WEB工程.最后一个 ...
- 使用Jsoup 爬取网易首页所有的图片
package com.enation.newtest; import java.io.File; import java.io.FileNotFoundException; import java. ...
- python的requests模块爬取网页内容
注意:处理需要用户名密码认证的网站,需要auth字段. # -*- coding:utf-8 -*- import requests headers = { "User-Agent" ...
随机推荐
- 利用c++操作XML,主要是内部循环方法的使用
本文主要分享的是循环方法的使用,设置XML节点属性,用了3种循环方法. XML文件: <?xml version='1.0' encoding='utf-8' ?><root> ...
- 图标字体的使用(fontello.com)字体推荐及使用技巧
网页设计中为了页面漂亮好看,图标是少不了,网页中使用的图标通常都是使用图片,使用图片图标的有很多弊端,如果你经常制作网页应该有一肚子埋怨. 使用图片图标的弊端 放大图标必须重新作图, 改变颜色必须开启 ...
- AS3.0定义变量的访问范围
在AS3.0中变量的默认访问范围是:internal:包内成员可以访问,包外不可访问.AS2.0默认访问范围是public
- 桂电在线-转变成bootstrap版
由于angularjs的不熟悉,而且SEO需要学习更多东西,于是先采用bootstrap版本,毕竟工作上也需要使用bootstrap,然后参照视频教程学习. bootstrap 基本模板 <!D ...
- PyQt5创建第一个窗体(正规套路)
一.Pyqt5 创建第一个窗体 很多人写窗体程序都是直接敲代码,不使用设计器,我个人不是很赞成这种做法.使用设计器的好处是直观.维护方便,尤其开发复杂窗体的效率高. 但是每次修改ui文件后,需要重新生 ...
- iOS: 学习笔记, 使用performSelectorOnMainThread及时刷新UIImageView
在iOS中, 界面刷新在主线程中进行, 这导致NSURLSession远程下载图片使用UIImageView直接设置Image并不能及时刷新界面. 下面的代码演示了如何使用 performSelect ...
- tomcat出现的PermGen Space问题(bat,或者eclipse启动。)
参考地址 http://www.blogjava.net/allen-zhe/archive/2007/12/18/168556.html 参考地址:http://javavsxiaoming.ite ...
- websocket nodejs实例
http://blog.sina.com.cn/s/blog_49cc837a0101aljs.html http://blog.sina.com.cn/s/blog_49cc837a0101a2q3 ...
- Life Forms
poj3294:http://poj.org/problem?id=3294 题意:就是求n个串的中一个最大的子串,这个子串在超过n/2的串中出现. 题解:这是一道好题.首先一种解法就是用后缀数组来搞 ...
- iOS-NSString-Base64String-Base64原理
之前看到好多人找Str2Base64Str,还有好多自己写了方法的,仔细研究了下base64的编码原理(这个我写在下面),发现官方的API已经可以完成这项功能,这里贴出来供大家参考. 一言不合就上代码 ...