亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bookschinaparser.java

?? 本系統實現了從五個網站上搜索的圖書進行整合后
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package com.booksearch.service.htmlparser;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;

import org.apache.log4j.Logger;
import org.cyberneko.html.parsers.DOMParser;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;

import com.booksearch.orm.Book;
import com.booksearch.orm.Price;
/**
 * Class:BookschinaParser
 * Description: 根據檢索關鍵字到www.bookschina.cn抽取匹配內容
 * extens:no
 * implements:HtmlParser<Element>
 * @author  wang jiaqiang
 * @since   11/09/08
 */
public class BookschinaParser implements HtmlParser<Element> {

	/* 存放本網站某一頁的記錄 */
	private ArrayList<Book> list;
    
//	private static final Logger logger;
	
//	static 
//    {
//        logger = Logger.getLogger(com.booksearch.service.htmlparser.BookschinaParser.class);
//    }
	/**
	 * Function: nekohtmlParser 
	 * Description: 用nekohtml解析器解析指定網頁,并轉化為dom對象
	 *  Calls: no 
	 *  Called By: no
	 * @param no
	 * @return Document
	 * @throws IOException,SAXException
	 */
	public Document nekohtmlParser(String url)throws Exception{
		/* 生成html 解析器 */
		DOMParser parser = new DOMParser();
		/* 設置網頁的默認編碼 */

		parser.setProperty(
					"http://cyberneko.org/html/properties/default-encoding",
					"gb2312");

        url = url.replace(" ", "+");
       // url = url.replace("%20", "+");
		URL u = new URL(url);

		/* 建立與源網站的連接 */
		URLConnection urlconn = u.openConnection();
		//urlconn.connect();
		//System.out.println(urlconn.getContentType());
		urlconn.setReadTimeout(30000);
		/* 獲得源網站的字節流,并轉化為字符流,設置編碼為utf-8 */
		BufferedReader in = new BufferedReader(new InputStreamReader(urlconn.getInputStream(), "gb2312"));
		/* 進行解析,轉化為xml */
		parser.parse(new InputSource(in));

		/* 轉化為dom對象 */
		Document doc = parser.getDocument();

		return doc;
	}
	/**
	* Function:  mainService
	* Description:  Dom對轉化過來的xml進行解析,取得圖書的各個信息
	* Calls:  getBookImage(),getBookName(),getBookName(),getBookAuthor(),
	*         getBookPublisher(),getBookPublishTime(),getBookPrice()
	* Called By:  no
	* @param doc as Document
	* @return ArrayList<Book>
	* @throws no
	*/
	public ArrayList<Book> mainService(Document doc,boolean flag) {
		list = new ArrayList<Book>();
		
		/* 取得所有<div>結點 */
		NodeList servers = doc.getElementsByTagName("div");
		for (int i = 0; i < servers.getLength(); i++) {
			if(Node.ELEMENT_NODE == servers.item(i).getNodeType()){
				Element serveritem = (Element) servers.item(i);
				Book book = new Book();
				Price price = new Price();
				/* 過濾出<div class="pic">結點,也就是存放圖片記錄的結點 */
				if ("pic".equals(serveritem.getAttribute("class"))) {
	                if(serveritem.hasChildNodes()){
						NodeList childList1 = serveritem.getChildNodes();
						Element childElement1 = (Element) childList1.item(0);
						NodeList cdList1 = childElement1.getChildNodes();
						for(int k = 0;k<cdList1.getLength();k++){
							Node cdTem = cdList1.item(k);
							if("IMG".equals(cdTem.getNodeName())){
								
								Element cdElement1 = (Element) cdTem;
								
								/* 取出圖書的圖片 */
								String bookImage = this.getBookImage(cdElement1);
								book.setBookImage(bookImage);
							}
						}
	                }
	
					Element serveritem2 = (Element) servers.item(i+=1);
					
				    /*過濾出<div class="xunhuan">結點,也就是存放記錄的結點 */
					if ("xunhuan".equals(serveritem2.getAttribute("class"))) {
					NodeList childList = serveritem2.getChildNodes();
				    
					/* 循環遍歷<div class="xunhuan">的子結點 */
					for (int j = 0; j < childList.getLength(); j++) {
						Node childNode = childList.item(j);
						/* 如果是元素結點(<span>,<li>),則進行分類處理,取出其中的文本值 */
						if (childNode.getNodeType() == Node.ELEMENT_NODE) {
							Element childElement = (Element) childNode;
							NodeList cdList = childElement.getChildNodes();
							//System.out.println("length>>"+cdList.getLength());
							if(cdList.getLength()>7){
								if(cdList.item(1).getNodeType() == Node.ELEMENT_NODE){
									Element secElement = (Element) cdList.item(1);
			
									/* 取出圖書的名字 */
									String bookName = this.getBookName(secElement);
									
									book.setBookName(bookName);
									String bookUrl = this.getBookUrl(secElement);
			                        price.setBookschinaUrl(bookUrl);
								}
								if(cdList.item(3).getNodeType() == Node.ELEMENT_NODE){
									Element secElement1 = (Element) cdList.item(3);
									/* 取出圖書的作者 */
									String bookAuthor = this.getBookAuthor(secElement1);
									book.setBookAuthor(bookAuthor);
								}
								if(cdList.item(5).getNodeType() == Node.ELEMENT_NODE){
									Element secElement2 = (Element) cdList.item(5);
									/* 取出圖書的出版社 */
									String bookPublisher = this
											.getBookPublisher(secElement2);
									book.setBookPublisher(bookPublisher);
								}
								Element secElement3 = null;
								if(cdList.item(7).getNodeType() == Node.ELEMENT_NODE){
									secElement3 = (Element) cdList.item(7);
									
									/* 取出圖書的出版時間 */
									String bookPublishTime = this
											.getBookPublishTime(secElement3);
									if(!"".equals(bookPublishTime)&&null != bookPublishTime)
									    book.setBookPublishTime(bookPublishTime);
								}
								if(cdList.getLength()>12){
									if(cdList.item(9).getNodeType() == Node.ELEMENT_NODE){
										/* 圖書的ISBN */
										Element temSecElement3 = (Element) cdList.item(9);
										//System.out.println(temSecElement3.getNodeName());
										String bookISBN = this.getBookISBN(temSecElement3);
										book.setBookISBN(bookISBN);
									}
									if(cdList.item(11).getNodeType() == Node.ELEMENT_NODE
											&&cdList.item(13).getNodeType() == Node.ELEMENT_NODE){
										Element secElement4 = (Element) cdList.item(11);
										/* 圖書的固定價格 */
										String bookFixPrice = this.getBookFixPrice(secElement4);
										book.setBookFixPrice(Double.valueOf(bookFixPrice));
										
										Element secElement5 = (Element) cdList.item(13);
										/* 圖書的市場價格 */			
										String bookPrice = this.getBookPrice(secElement5);
										price.setBookschinaPrice(Double.valueOf(bookPrice));
										/* 圖書的折扣 */
										double discount=0;
										discount=(Double.valueOf(bookPrice))/(Double.valueOf(bookFixPrice));
					             		DecimalFormat df = new DecimalFormat("####.00"); 
					             		
										price.setBookschinaDiscount((Float.valueOf(df.format(discount))));
									}
								}else{
									if(null !=secElement3&&cdList.item(11).getNodeType() == Node.ELEMENT_NODE){
										/* 圖書的ISBN */
										String bookISBN = this.getBookISBN(secElement3);
										book.setBookISBN(bookISBN);
										 //System.out.println(secElement3.getTextContent());
										Element secElement4 = (Element) cdList.item(9);
										/* 圖書的固定價格 */
										String bookFixPrice = this.getBookFixPrice(secElement4);
										book.setBookFixPrice(Double.valueOf(bookFixPrice));
										
										Element secElement5 = (Element) cdList.item(11);
										/* 圖書的市場價格 */	
										String bookPrice = this.getBookPrice(secElement5);
										price.setBookschinaPrice(Double.valueOf(bookPrice));
										/* 圖書的折扣 */
										double discount=0;
										discount=(Double.valueOf(bookPrice))/(Double.valueOf(bookFixPrice));
					             		DecimalFormat df = new DecimalFormat("####.00"); 
					             		
										price.setBookschinaDiscount((Float.valueOf(df.format(discount))));
									}
								}
							}
						}
	
					}
				}
				if(!"".equals(book.getBookName())){
					 book.setPrice(price);
					 list.add(book);
				}
			  }
		   }
		}

		return list;

	}
	/**
	* Function:  getDetailInfo
	* Description:  獲得某本書的詳細信息,價格,折扣
	* Calls:  getBookUrl(),getBookFixPrice(),getBookPrice(),
	* Called By:  no
	* @param doc as Document
	* @return Price
	* @throws no
	*/
	public Price getDetailInfo(Document doc) {
		Price price = new Price();
		/* 取得所有<div>結點 */
		NodeList servers = doc.getElementsByTagName("div");
		for (int i = 0; i < servers.getLength(); i++) {
			
			Element serveritem = (Element) servers.item(i);
			if ("xunhuan".equals(serveritem.getAttribute("class"))) {
                
				NodeList childList = serveritem.getChildNodes();		    
				/* 循環遍歷<div class="xunhuan">的子結點 */
				for (int j = 0; j < childList.getLength(); j++) {
					Node childNode = childList.item(j);
					/* 如果是元素結點(<span>,<li>),則進行分類處理,取出其中的文本值 */
					if (childNode.getNodeType() == Node.ELEMENT_NODE) {
						Element childElement = (Element) childNode;
						NodeList cdList = childElement.getChildNodes();
						if(cdList.getLength()>=1){
							Node secElement = (Node) cdList.item(1);
	                        if(secElement.getNodeType() == Node.ELEMENT_NODE){
								String bookUrl = this.getBookUrl((Element)secElement);
		                        price.setBookschinaUrl(bookUrl);
	                        }
						}
						if(cdList.getLength()>12){
                            if(cdList.item(11).getNodeType() == Node.ELEMENT_NODE
                            		&&cdList.item(13).getNodeType() == Node.ELEMENT_NODE){
								Element secElement4 = (Element) cdList.item(11);
								/* 圖書的固定價格 */
								String bookFixPrice = this.getBookFixPrice(secElement4);

								Element secElement5 = (Element) cdList.item(13);
								/* 圖書的市場價格 */
								String bookPrice = this.getBookPrice(secElement5);
								if(null !=bookPrice&&!"".equals(bookPrice))
								    price.setBookschinaPrice(Double.valueOf(bookPrice));
								/* 圖書的折扣 */
								double discount=0;
								discount=(Double.valueOf(bookPrice))/(Double.valueOf(bookFixPrice));
			             		DecimalFormat df = new DecimalFormat("####.00"); 
			             		
								price.setBookschinaDiscount((Float.valueOf(df.format(discount))));
                            }
						}else if(cdList.getLength() == 11){
                            if(cdList.item(9).getNodeType() == Node.ELEMENT_NODE
                            		&&cdList.item(11).getNodeType() == Node.ELEMENT_NODE){
								Element secElement4 = (Element) cdList.item(9);
								/* 圖書的固定價格 */
								String bookFixPrice = this.getBookFixPrice(secElement4);
								
								Element secElement5 = (Element) cdList.item(11);
								/* 圖書的市場價格 */
			
								String bookPrice = this.getBookPrice(secElement5);
								price.setBookschinaPrice(Double.valueOf(bookPrice));
								/* 圖書的折扣 */
								double discount=0;
								discount=(Double.valueOf(bookPrice))/(Double.valueOf(bookFixPrice));
			             		DecimalFormat df = new DecimalFormat("####.00"); 
			             		
								price.setBookschinaDiscount((Float.valueOf(df.format(discount))));
                            }
						}
					}	
				}
				break;
			}
		}
		return price;
	}
	/**
	 * Function: getBookImage Description: 獲得圖書封面圖片地址 
	 * Calls: no 
	 * Called By:mainService
	 * @param bookElement as Element
	 * @return String
	 * @throws no
	 */
	public String getBookImage(Element bookElement) {

		String bookImage = "";
        if(bookElement.hasAttribute("src"))
		    bookImage = bookElement.getAttribute("src");
        if(bookImage.length()>0)
        	bookImage = bookImage.trim();
		return bookImage;
	}

	/**
	 * Function: getBookName 
	 * Description: 獲得圖書名稱 
	 * Calls: no Called By:mainService 
	 * @param bookElement as Element
	 * @return String
	 * @throws no
	 */
	public String getBookName(Element bookElement) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩高清在线一区| 亚洲三级免费电影| 美洲天堂一区二卡三卡四卡视频| 欧美亚洲日本国产| 亚洲va天堂va国产va久| 日韩欧美一级二级三级久久久| 婷婷国产在线综合| 精品久久久久久久久久久久久久久久久 | 性做久久久久久免费观看| 欧美丰满嫩嫩电影| 极品销魂美女一区二区三区| 久久久精品2019中文字幕之3| 波多野结衣中文字幕一区二区三区| 亚洲欧美日韩中文字幕一区二区三区| 在线看一区二区| 免费成人av在线播放| 国产欧美精品国产国产专区 | 色婷婷av一区二区三区之一色屋| 亚洲小说春色综合另类电影| 日韩一二三区视频| 国产xxx精品视频大全| 亚洲美女视频在线| 日韩欧美一级特黄在线播放| 成人性生交大合| 亚洲成a人在线观看| 久久久久国色av免费看影院| 色哦色哦哦色天天综合| 免费一级欧美片在线观看| 中文字幕欧美激情| 欧美日本国产一区| 成人app网站| 青青草一区二区三区| 亚洲欧洲精品一区二区三区不卡| 91精品国产免费久久综合| 成人免费三级在线| 日本一不卡视频| 国产精品久久久久久久久久久免费看| 欧美视频一区二区三区在线观看 | 日本欧美大码aⅴ在线播放| 中文字幕精品综合| 精品国产亚洲一区二区三区在线观看| 成人av一区二区三区| 男女男精品视频网| 亚洲午夜久久久久| 中文av一区二区| 日韩精品一区二| 欧美色图在线观看| 99久久婷婷国产| 久久精品国产一区二区| 午夜精品一区二区三区三上悠亚| 国产精品久久久久影视| 欧美精品一区二区久久久| 欧美日韩一区二区三区在线看 | 成人黄色免费短视频| 老司机精品视频导航| 五月天亚洲婷婷| 亚洲综合无码一区二区| 亚洲视频一区在线观看| 中文一区一区三区高中清不卡| 日韩欧美黄色影院| 91精品国产欧美一区二区成人 | 亚洲高清免费一级二级三级| ●精品国产综合乱码久久久久| 精品成人一区二区三区四区| 51精品国自产在线| 欧美精品第一页| 欧美日韩一区二区在线观看| 91久久精品一区二区三| 91视频国产资源| 成人精品一区二区三区四区| 粉嫩13p一区二区三区| 国产一区福利在线| 精彩视频一区二区三区 | 国产一区二区三区综合| 久久国产精品第一页| 麻豆精品视频在线观看| 久久99久久久欧美国产| 久久99精品一区二区三区| 麻豆一区二区99久久久久| 蜜臀av亚洲一区中文字幕| 另类专区欧美蜜桃臀第一页| 久久精品99国产国产精| 另类小说欧美激情| 九色综合狠狠综合久久| 精东粉嫩av免费一区二区三区 | 成人午夜免费av| 不卡av在线免费观看| 91在线精品秘密一区二区| 色婷婷综合激情| 欧美日韩一区三区四区| 日韩免费高清av| 久久亚洲精品国产精品紫薇| 国产日韩精品一区二区三区| 国产精品动漫网站| 亚洲一区二区av电影| 日本中文字幕一区| 国产精品伊人色| 99r国产精品| 不卡电影一区二区三区| 欧美性xxxxxxxx| 5月丁香婷婷综合| 日本一区二区三区高清不卡| 亚洲综合在线视频| 免费人成在线不卡| 日本高清不卡在线观看| 欧美一区二区视频在线观看2020| 欧美不卡视频一区| 日韩一区中文字幕| 奇米色777欧美一区二区| 高清在线观看日韩| 日本精品视频一区二区三区| 欧美一区二区三区免费观看视频| 国产拍欧美日韩视频二区| 一区二区三区在线视频观看58| 免费成人在线影院| 国产伦理精品不卡| 色94色欧美sute亚洲线路一久| 日韩网站在线看片你懂的| 中文字幕+乱码+中文字幕一区| 亚洲伊人色欲综合网| 国产老肥熟一区二区三区| 色嗨嗨av一区二区三区| 精品国产凹凸成av人网站| 亚洲精品ww久久久久久p站| 三级在线观看一区二区| 成人av网站免费| 日韩精品一区二区三区视频播放| 亚洲欧美偷拍另类a∨色屁股| 久久国产精品区| 欧美日精品一区视频| 国产精品福利影院| 极品美女销魂一区二区三区免费| 日本高清免费不卡视频| 久久精品无码一区二区三区| 午夜精品一区二区三区三上悠亚| 9i在线看片成人免费| 欧美v国产在线一区二区三区| 亚洲精品第一国产综合野| 国产aⅴ精品一区二区三区色成熟| 3d动漫精品啪啪1区2区免费| 一区二区视频在线看| 成人中文字幕电影| www国产成人| 日本视频免费一区| 欧美性极品少妇| 亚洲欧美电影院| av在线综合网| 国产色产综合色产在线视频| 久久精品国产亚洲高清剧情介绍| 欧美日本韩国一区二区三区视频| 亚洲欧美日本在线| jlzzjlzz亚洲日本少妇| 国产午夜一区二区三区| 精品一区二区三区在线播放 | 精品三级在线观看| 亚洲18色成人| 欧美色成人综合| 亚洲一区二区三区在线看| 91一区二区在线观看| 国产精品久久久久aaaa| 国产精品白丝jk黑袜喷水| 久久亚区不卡日本| 国产专区综合网| 精品久久一二三区| 国产一区二三区好的| 亚洲精品一区二区三区影院| 六月丁香综合在线视频| 精品久久久网站| 精品一区在线看| 久久久高清一区二区三区| 国内成人自拍视频| 久久这里只有精品首页| 国产高清不卡一区| 中文字幕国产精品一区二区| 成人h精品动漫一区二区三区| 最新日韩av在线| 91丨九色丨黑人外教| 一区二区三区在线不卡| 欧美亚男人的天堂| 亚洲一卡二卡三卡四卡五卡| 久久久91精品国产一区二区精品 | 日韩在线一区二区三区| 欧美精品日韩精品| 美国十次综合导航| 欧美精品一区二区在线播放| 国产福利视频一区二区三区| 欧美激情一区在线观看| 91美女精品福利| 亚洲国产三级在线| 日韩一区国产二区欧美三区| 国产一区二区三区视频在线播放| 国产日韩高清在线| 日本道免费精品一区二区三区| 午夜亚洲福利老司机| 欧美哺乳videos| av午夜精品一区二区三区| 亚洲电影一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲| 成人91在线观看| 日韩电影在线看|