自动获取网店图书介绍

背景

和好友一起在口袋通上开了一个微店。以图书为例,需要往微店后台添加介绍数据,一般的做法是去京东或亚马逊这些网站找到同本图书,然后将其中的书名、作者、内容简介、目录等信息一条一条的复制、粘贴过来,甚是麻烦。

解决方法

如果能用Java程序去实现这一繁琐的手工过程就好了!说干就干,let's rock and roll.

首先介绍一下要用到的第三方类库Jsoup。Jsoup是一款开源的Java类库,用于解析静态HTML页面。静态,是指查看网页源代码,数据都是在网页标签里的,而不是由JavaScript动态操作页面或者网页二次请求加载进来的。

再说一下手工获取京东图书数据的步骤。1. 打开京东搜索框,输入书名,点击搜索按钮;2. 从结果也中选出对应的图书,点击;3.进入图书介绍页面,复制图书信息;

转化为程序,我们需要得到图书介绍页面的url,然后用Jsoup去解析页面中的标签,得到想要的数据。这个url从哪里得到?可以从搜索结果页面中得到的!那么我们就要先找出搜索结果页面,从中获取此url。我们知道,如果书名输入的比较准确,第一条搜索结果往往就是我们要搜索的图书,我们就用Jsoup解析第一条结果就ok了。而搜索结果页面如何获得呢?其实搜索结果页面就是一个url对应的页面,看浏览器的地址栏就知道了(如《陈寅恪的最后20年》的搜索结果页面对应的url就是"http://search.jd.com/Search?keyword=机动车驾驶员教材解读&enc=utf-8")。所以,我们可以拼接搜索结果页面的url,请求这个url就可以得到搜索结果页面。

整个过程串起来就是:首先,拼接搜索结果页面的url;其次,请求该url,获得搜索结果页面对应的Document对象;然后,解析搜索结果页面,获取第一条商品对应的url;最后,请求商品对应的url,获取商品介绍页面;最后,解析页面,得到想要的数据。

自动获取网店图书介绍_第1张图片

由于京东图书页面有多个模板,我在程序中只解析了如下图所示这种。

自动获取网店图书介绍_第2张图片

而下图这种模板,则没有解析。

自动获取网店图书介绍_第3张图片


程序代码

下面我们就上程序。新建Java工程后要引入Jsoup的jar包。

/**
 * @Title      : Spider.java
 * @Package    : com.fleamarket.main
 * @Description: 
 * 
 * @author : cmm
 * @date   : 2015-1-10 下午9:58:45
 * @version: V1.0
 */

package com.fleamarket.main;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

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

/**
 * @ClassName : Spider
 * @Description: TODO
 * @author : cmm
 * @date : 2015-1-10 下午9:58:45
 * 
 */

public class Spider {

	/**
	 * @Title: main
	 * @Description: TODO
	 * @param @param args
	 * @return void
	 * @throws
	 */

	public static void main(String[] args) {

		String bookTitle = "机动车驾驶员教材解读";
		try {
			
			// 京东商品搜索框的url
			String urlToSearch = "http://search.jd.com/Search?keyword=__TITLE__&enc=utf-8".replace("__TITLE__",
					URLEncoder.encode(bookTitle, "utf-8"));

			// 请求京东服务器进行搜索
			Connection con = Jsoup.connect(urlToSearch)
					.userAgent(GlobalConfig.USER_AGENT)
					.timeout(10000);

			// 搜索结果页面对应的Document对象
			Document doc = con.get();

			Elements es = doc.body().select("li.item-book:eq(0)"); // 根据bookTitle的搜索结果,取第一条

			String title; // 书名
			String href = null; // 链接
			for (Element e : es) {
				title = e.select("div.p-name a").text().trim(); // 书名
				href = e.select("div.p-name a").attr("abs:href");

				System.err.println("title: " + title);
				System.err.println("href: " + href);
			}

			// 进入书籍介绍页面
			con = Jsoup.connect(href)
					.userAgent(GlobalConfig.USER_AGENT)
					.timeout(10000);

			doc = con.get();

			System.out.println("\n《" + bookTitle + "》,8成新");
			System.out.println("原书购于:" + href + "\n");

			// 基本信息
			Elements basicInfo = doc.body().select("ul.detail-list li:gt(1)");
			System.out.println("基本信息");
			for (int i = 0; i < basicInfo.size(); i++) {
				Element e = basicInfo.get(i);
				String li = e.text().trim();
				System.out.println(li);
			}
			System.out.println("");

			// 内容简介
			Elements introInfo = doc.body().select("div#detail-root-3");
			for (int i = 0; i < introInfo.size(); i++) {
				Element e = introInfo.get(i);
				String cont = e.text().trim().replace("内容简介", "内容简介\n")
						.replaceAll("\\s{2,}", "\n");
				System.out.println(cont);
			}
			System.out.println("");

			// 目录
			Elements contInfo = doc.body().select("div#detail-root-6 div.item-mc div.detail-content");
			System.out.println("目录");
			for (int i = 0; i < contInfo.size(); i++) {
				Element e = contInfo.get(i);
				String cont = e.html().replace("<br />", "\n");
				System.out.println(cont + "\n...");
			}
			System.out.println("");

		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

程序中的bookTitle即为书名,修改之即可搜索不同的图书。目前输出的结果有书名、图书介绍页面的url、“商品介绍”、“内容简介”、“目录”共5项内容。

控制台输出结果:

图书名称: 机动车驾驶员教材解读
京东链接: http://item.jd.com/11390510.html

《机动车驾驶员教材解读》,8成新
原书购于:http://item.jd.com/11390510.html

基本信息
出版社:中国社会出版社
开本:16开
页数:222
包装:平装
出版时间:2013-11-01
版次:1
印次:1
正文语言:中文
用纸:胶版纸

内容简介
  《机动车驾驶员教材解读》是经过多位资深法培老师研讨编辑,总结了多年的培训经验,结合最新的《机动车培训教学大纲》进行编辑著作而成。《机动车驾驶员教材解读》严格遵照《规定》与《考试大纲》的要求,依照国家道路交通法律法规,精心为所有机动车驾驶证申领者们量身打造的一本学习教材。

目录
第一章 驾驶证与机动车管理

第一节 申领驾驶证

第二节 驾驶证的使用

第三节 机动车管理



第二章 道路通行规定

第一节 道路通行原则

第二节 道路通行规定

第三节 高速公路管理规定



第三章 交通信号

第一节 交通信号灯

第二节 交通标志

第三节 交通标线

第四节 交通警察手势



第四章 道路交通事故处理

第一节 交通事故现场处置

第二节 自行协商事故处理

第三节 事故现场的强制撤离

第四节 机动车交通事故责任强制保险



第五章 法律责任

第一节 行政强制措施

第二节 行政处罚

第三节 部分道路交通安全违法行为的处罚标准

第四节 道路交通安全违法行为的刑事法律责任



第六章 机动车基本常识与养护

第一节 车辆基本构造常识

第二节 车辆检查与维护保养



第七章 安全行车与文明驾驶

第一节 安全行车

第二节 文明驾驶

第三节 恶劣气象和复杂道路条件下的安全驾驶



第八章 紧急情况处置

第一节 原则

第二节 行车中常见的紧急情况处置

第三节 高速公路紧急避险



第九章 交通事故救护

第一节 伤员急救的基本原则

第二节 现场不同伤员急救方法

第三节 危险化学品运输驾考模拟试题

一、 交通安全法律、法规理论试题

二、 安全文明驾驶知识试题
...

如需Java工程源码,请留邮箱。

你可能感兴趣的:(自动获取网店图书介绍)