HTML Parser Jsoup - 网页抓取百度百科信息的例子

本文展示了如何利用Jsoup这个HTML解析库来抓取百度百科的页面信息,包括基本信息、信息列表和人物图片。教程中给出了部分代码示例,强调了网页抓取和简单爬虫的实现。
摘要由CSDN通过智能技术生成

目标:获取百度百科基本信息、信息列表、人物图片(同名情况暂不考虑)。

重点:调用开源Jar包Jsoup对HTML解析。网页抓取、简单爬虫。


例子(部分类去掉,运行需改改code):

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class BaiduBaikeUtils
{
	private static Logger logger = LoggerFactory.getLogger(BaiduBaikeUtils.class);
	final static String BAIKE_SEARCH = "http://baike.baidu.com/search/word?word=";
	final static String DOUBLE_QUOTE = "\"";
	final static String NON_WORD_CHAR = "[^\\p{L}\\p{Nd}]+";
	
	/*
	 * 获取百科Url
	 */
	private static String getBaikeSearchUrl(String name){
		String url = null;
		url = BAIKE_SEARCH + name;
		return url;
	}
	
	private static Document getDocument(String url){
		Document doc = null;
		try {
			doc = Jsoup.connect(url).timeout(5000).get();
		} catch (IOException e) {
			logger.error("error to connect to Baidu baike" + e.getClass().getName() + ": " + e.getMessage());
		}
		return doc;
	}
	
	/*
	 * 获取具体信息列表
	 */
	private static WeiboPerson parseBaseInfoWrap(Document doc){
		final String BASE_INFO_WRAP = "baseInfoWrapDom";
		WeiboPerson weiboPerson = new WeiboPerson();
		Map<String, String> biTitleMap = setBiTitleMap();
		
		if (doc == null) return null;
		if (null != doc.getElementById(BASE_INFO_WRAP)) {
			Elements elements = doc.getElementById(BASE_INFO_WRAP).getElementsByClass("biItemInner");
			if (null != elements && elements.size() > 0) {
				for (Element element : elements) {
					setWeiboPerson(weiboPe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值