`
jilong-liang
  • 浏览: 481289 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

使用Jsoup抓取车标网各种类型相应车的信息

阅读更多

【谷歌翻译,参考可以看官方原文】

 jsoup:Java的HTML解析器  

 jsoup是与现实世界的HTML工作的Java库。它提供了用于提取和操作数据,使用最好的DOM, 

CSS和jquery的方法很像,而且的API很方便。    

 

jsoup实现了WHATWG的HTML5规范,并解析HTML到同一个DOM现代浏览器做。  

 

刮从一个URL,文件或字符串解析HTML  

发现并提取数据,使用DOM遍历或CSS选择器 操纵HTML元素,属性和文本  

对一个安全白名单干净的用户提交的内容,以防止XSS攻击  输出HTML整洁  

jsoup是专门用来对付HTML各品种在野外发现的;从原始和验证,无效标签汤; jsoup将创建一个明智的解析树。  

 

 //Document doc=Jsoup.parse(new URL(requestURL), 3000);

 

// Document doc=Jsoup.connect(requestURL).timeout(5000).get();

 

 //Document doc = Jsoup.connect(requestURL).timeout(3000).userAgent("Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0")).get();

 

 Document doc = Jsoup.connect(requestURL).timeout(3000).cookie("auth", "token").userAgent("Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0").get();

 

Jsoup.connect( homepage).userAgent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)").referrer("www.google.com").get()

 

 

例  

获取维基百科网页,它解析为一个DOM,并从在新闻栏目中选择头条新闻为元素(在线样品)的列表:

 

Document doc =Jsoup.connect("http://en.wikipedia.org/").get();

Elements newsHeadlines = doc.select("#mp-itn b a");//获取id为mp-itn下面b标签的a标签的元素

 

开源 jsoup是在宽松的MIT许可证分发的一个开源项目。源代码可以在GitHub上。 入门 

下载jsoup罐子(版本1.8.1) 阅读菜谱介绍 享受! 开发和支持 如果您对如何使用jsoup,

或者有想法将来的发展有任何疑问,请通过邮件列表联系。 

如果您发现任何问题,请检查重复之后提交的bug。 状态 jsoup是一般的发布。 

 

 

你抓取得太狠了吧,速度快的话,对方网站服务器会不定时有一会无响应,处理如下: 

1.对方网站有多个IP的时候,自己写个分发类,轮流去每个ip取。
2.对于1个IP的时候,遇到这种情况,当前线程就自动暂停几秒钟,然后再重试,自动马上重试的话,也有问题。
建议jsoup和httpclient一起用,httpclient去抓取信息,jsoup做分析。上面2种处理,用httpclient都好解决的,jsoup的特长在于分析,抓取是httpclient的特长。
connectTimeout和soTimeout一般都设置3秒就好了,抓取么,用单例就好,多线程的话,更容易遇到timeout。

 

package ivyy.taobao.com.jsoup;
import ivyy.taobao.com.entity.CheBiao;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/**
 *@Date:2015-1-6
 *@Author:liangjilong
 *@Email:jilongliang@sina.com
 *@Version:1.0
 *@Description:使用Jsoup抓取车标网各种相应车的信息
 */
public class JsoupCar {
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		/**
		 * 国产,日本,德国,法国,意大利,英国,美国,韩国,其他
		 */
		String [] countryNames={"guochan","riben","deguo","faguo","yidali","yingguo","meiguo","hanguo","qita"};

		//遍历获取太多信息估计会超时连接,可以单独一个一个的去设值抓取如
		//List<CheBiao> listsChe=getCheBiaoInfoByHtml("guochan");
		for(String countryName:countryNames){
			//System.out.println(countryName);
			List<CheBiao> listsChe=getCheBiaoInfoByHtml(countryName);//
			int count=1;
			for (Iterator iterator = listsChe.iterator(); iterator.hasNext();) {
				CheBiao cheBiao = (CheBiao) iterator.next();
				
				System.out.println("第"+count+"-------"+cheBiao.getDetailText());
				
				//System.out.println("第"+count+"-------"+cheBiao.getConcise());
				count++;
			}
		}
		
	}
	
	/***
	 * 根据相应的国家品牌的名称去获取车的信息
	 * @param countryName
	 * @return
	 */
	public static List<CheBiao> getCheBiaoInfoByHtml(String countryName)throws Exception{
		List<CheBiao> listsChe=new ArrayList<CheBiao>();
		String url=getUrl(countryName);
		Document doc=Jsoup.parse(new URL(url), 3000);//方法一
		//Document doc=Jsoup.connect(url).get();//方法二
		if(doc!=null){
			//处理从页面的class=expPicA样式下面的li标签
			Elements liEls=doc.getElementsByAttributeValue("class", "expPicA").select("li");
			for(Element li:liEls){
				CheBiao che=new CheBiao();
				//从i标签的class=iTit的a标签拿出相应的信息内容出来
				String carName=li.select("i[class=iTit]").select("a").text().trim();//获取汽车名称
				String imgSmallSrc=li.select("i[class=iTxt]").select("img").attr("src");//获取汽车图片路径
				String concise=li.select("i[class=iDes]").text().trim();//简要
				
				String detailUrl=li.select("i[class=iPic]").select("a").attr("href");//获取汽车详情的html页面连接
				Document descDoc=Jsoup.parse(new URL(detailUrl), 3000);//方法一
				String imgBigSrc="",detailText="";
				if(descDoc!=null){
					Element article=descDoc.select("div[class=article]").get(0);
					detailText=article.html();//获取详情信息
					imgBigSrc=article.select("img").attr("src");//获取大图片
				}
				
				che.setCarName(carName);
				che.setConcise(concise);
				che.setImgSmallSrc(imgSmallSrc);
				che.setDetailUrl(detailUrl);
				che.setImgBigSrc(imgBigSrc);
				che.setDetailText(detailText);
				
				listsChe.add(che);
			}
			return listsChe;
		}else{
			//html="Network Connect Timeout";
		}
		return null;
	}
	
	
	/***
	 *  根据相应的国家品牌的名称请求相应的连接
	 * @param countryName
	 * @return
	 */
	public static String getUrl(String countryName){
		return "http://www.pcauto.com.cn/zt/chebiao/"+countryName;
	}
}

 

package ivyy.taobao.com.entity;

import java.io.Serializable;

/**
 *@Date:2015-1-6
 *@Author:liangjilong
 *@Email:jilongliang@sina.com
 *@Version:1.0
 *@Description:实体类
 */
@SuppressWarnings("all")
public class CheBiao implements Serializable{
	private Integer id;//id标识
	private String carName;//汽车名称
	private String concise;//简要说明
	private String imgSmallSrc;//汽车小图片路径
	private String imgBigSrc;//汽车大图片路径
	private String detailUrl;//汽车详情页面路径
	private String detailText;//汽车详情描述
	
	/******************get/set*****************************/
	public String getDetailText() {
		return detailText;
	}
	public void setDetailText(String detailText) {
		this.detailText = detailText;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getCarName() {
		return carName;
	}
	public void setCarName(String carName) {
		this.carName = carName;
	}
	public String getConcise() {
		return concise;
	}
	public void setConcise(String concise) {
		this.concise = concise;
	}
	public String getImgSmallSrc() {
		return imgSmallSrc;
	}
	public void setImgSmallSrc(String imgSmallSrc) {
		this.imgSmallSrc = imgSmallSrc;
	}
	public String getImgBigSrc() {
		return imgBigSrc;
	}
	public void setImgBigSrc(String imgBigSrc) {
		this.imgBigSrc = imgBigSrc;
	}
	public String getDetailUrl() {
		return detailUrl;
	}
	public void setDetailUrl(String detailUrl) {
		this.detailUrl = detailUrl;
	}
	
}

 

分享到:
评论

相关推荐

    Java使用Jsoup抓取网页关键信息并入库

    在"Java使用Jsoup抓取网页关键信息"这部分,我们需要了解以下几个知识点: 1. **Jsoup连接与解析网页**:使用Jsoup的`connect()`方法建立HTTP连接,然后通过`get()`或`post()`发送请求获取网页内容。获取到的HTML...

    httpClient+jsoup 抓取网页数据

    在IT领域,网络数据抓取是一项重要的技能,它允许我们从网页中提取所需的信息,用于数据分析、内容聚合或自动化任务。HttpClient和Jsoup是两个Java库,分别专注于HTTP通信和HTML解析,它们常被组合使用来高效地抓取...

    Jsoup抓取整个网站

    在本篇中,我们将深入探讨如何使用Jsoup来抓取整个网站,并将其保存到本地,包括CSS、JavaScript、图片以及各个页面。 首先,我们需要了解Jsoup的基本用法。Jsoup通过建立一个HTTP连接到目标网站,然后解析返回的...

    使用Jsoup抓取网页关键信息并入库 ip天气查询并发送邮件

    本项目将讲解如何使用Jsoup来抓取网页的关键信息,并将其存储到数据库中,同时实现通过IP地址查询天气并以邮件形式发送。 首先,Jsoup提供了简洁的API,使得解析HTML变得易如反掌。我们可以利用Jsoup的`connect()`...

    使用Jsoup,抓取整个网站(包括图片、js、css)

    在这个项目中,我们使用Jsoup配合Java,实现了抓取整个网站的功能,包括其中的图片、CSS样式表和JavaScript文件。通过这样的工具,我们可以对网页进行离线浏览或者备份,甚至进行数据分析。 首先,我们要理解Jsoup...

    jsoup抓取网页教程

    很实用的jsoup抓取网页教程,通过查看此文档,您可以解决你在抓取网页过程中出现的问题

    jsoup抓取网页内容

    这是一个使用jsoup抓取网页内容的例子,适合从事手机开发的初学者学习

    java+jsoup抓取网页数据

    在IT行业中,网络数据抓取是一项重要的技能,它允许开发者获取和分析大量互联网上的信息。本教程将聚焦于使用Java和Jsoup库来实现这一目标。Jsoup是Java的一个库,设计用于处理真实世界的HTML,提供了强大的解析、...

    Jsoup抓取一个完整的网站.rar

    在这个"Jsoup抓取一个完整的网站.rar"压缩包中,你将找到一个示例项目,教你如何使用Jsoup配合Java来抓取一个网站的所有资源,包括图片、CSS样式表和JavaScript文件,并在本地按照原始网站的目录结构进行保存。...

    Jsoup抓取实例

    以下是使用Jsoup进行数据抓取的基本步骤: 1. **引入依赖**:在Java项目中,你需要在构建文件(如Maven的pom.xml或Gradle的build.gradle)中添加Jsoup的依赖。例如,在Maven中: ```xml &lt;groupId&gt;org.jsoup ...

    用jsoup抓取网页数据

    本教程将深入探讨如何使用Jsoup有效地从网页中提取信息,并最终将其转化为JSON格式,为数据分析或应用程序接口(API)提供便利。 ### 1. Jsoup简介 Jsoup是由Jesse Wilson创建的一个开源项目,它的核心功能是解析...

    安卓listview相关相关-使用jsoup异步抓取新闻数据装载listview(仿开源中国资讯列表.rar

    本示例是关于如何使用Jsoup库异步抓取网络上的新闻数据,并将其填充到ListView中,模仿开源中国的资讯列表。Jsoup是一个强大的Java库,它使得解析HTML文档、提取和修改数据变得简单。 首先,我们需要了解Jsoup的...

    安卓listview相关相关-实现浏览新浪新闻jsoup抓取网页信息listview列表下拉刷新.rar

    在本项目中,开发者使用Jsoup连接到新浪新闻网站,通过选择器抓取新闻标题、摘要等信息。这通常涉及到以下步骤: 1. 使用Jsoup的`connect()`方法建立与目标URL的连接。 2. 调用`get()`或`post()`方法发送HTTP请求并...

    Android项目源码简单利用jsoup爬取学校内网数据

    本项目是一个基于安卓的简单利用jsoup爬取学校内网数据的教务系统app,设计的部分有:个人信息、课程表、考试时间、考勤信息、成绩查询、奖惩情况、开设课程、晚归违规等部分。主要思路就是利用jsoup爬数据把数据转化...

    jsoup从网络上抓取图片

    在本教程中,我们将重点讨论如何使用JSoup从网络上抓取并下载图片。 **步骤一:设置依赖** 在开始之前,确保你的项目已经添加了JSoup库的依赖。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml ...

    jsoup 网页信息 抓取 选择器

    在新浪高尔夫频道的新闻抓取中,我们可以先通过jsoup连接到目标URL,然后使用CSS选择器找到新闻列表的元素。例如,如果新闻标题在class为"news-item-title"的元素中,我们可以这样获取: ```java Document doc = ...

    Http,Jsoup-网页数据抓取

    在IT行业中,网络数据抓取是一项重要的技能,它允许开发者获取并分析网页上的信息,以进行各种用途,如数据分析、网站监控或者构建自己的应用程序。在这个主题中,我们将深入探讨两个关键概念:Http协议和Jsoup库,...

    jsoup1.8.1抓取爬虫工具

    **jsoup1.8.1抓取爬虫工具** jsoup是Java领域中一款非常流行的HTML解析库,它主要用于处理实际世界中的HTML,提供了一种干净、简单的API来提取和...通过深入学习和实践,你可以利用jsoup实现各种复杂的网页抓取任务。

    使用jsoup异步抓取新闻数据装载listview(仿开源中国资讯列表)

    本文将深入探讨如何使用jsoup这个Java库来实现异步抓取新闻数据,并将其装载到Android的ListView中,模拟开源中国资讯列表的功能。 首先,我们需要了解jsoup。Jsoup是一个用于处理实际世界HTML的Java库。它提供了...

    jsoup多线程爬虫

    此外,项目中可能还包含了`jsoupDemo.docx`文件,这可能是一个详细的文档,包含了更多关于如何使用jsoup和多线程抓取新闻的步骤和示例代码。而`jsoup-1.10.2.jar`是jsoup库的版本,确保将其添加到项目的类路径中,...

Global site tag (gtag.js) - Google Analytics