WebMagic爬取豆瓣读书的书籍数据

本次案例主要是爬取豆瓣读书的标签列表以及每个标签下的书籍名称、对应的URL,然后输出到控制台。

1、引入webmagic的依赖

	
	
	    us.codecraft
	    webmagic-core
	    0.7.3
	
	
	    us.codecraft
	    webmagic-extension
	    0.7.3
	

2、编写爬虫类


public class WebMagicTest implements PageProcessor {
	
	/**
	 * 利用正则表达式匹配标签下的书籍列表界面URL
	 * 例如:https://book.douban.com/tag/名著
	 */
	static String tagLinks="https://book.douban.com/tag/.*";
	static Pattern tagLinksPattern=Pattern.compile(tagLinks);

	//抓取网站的相关配置,包括编码、抓取间隔、重试次数等
    private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);
	
	public static void main(String[] args) {
		//启动爬虫
		Spider.create(new WebMagicTest()).addUrl("https://book.douban.com/tag/?view=type")
			.thread(1).run();
	}

	// process是定制爬虫逻辑的核心接口,在这里编写抽取逻辑
	@Override
	public void process(Page page) {
		Html html=page.getHtml();
		
		/**
		*豆瓣读书标签列表页面
		*在这个界面获取标签的URL,并加入爬取URL队列
		*/
		if (page.getUrl().toString().equals("https://book.douban.com/tag/?view=type")) {
			String douban="https://book.douban.com/tag/";
			//匹配下的标签下的标签下的
标签下的中的内容 List tags=html.xpath("//table[@class='tagCol']/tbody/tr/td/a/text()").all(); //补全URL,并加入爬去队列 for (String string : tags) { page.addTargetRequest(douban+string); } } /** *豆瓣读书标签下的书籍列表界面 *输出标签名以及书籍信息 */ else if(tagLinksPattern.matcher(page.getUrl().toString()).matches()) { //获取标签名 String tag=html.xpath("//div[@id='content']/h1/text()").get(); String[] tagSplit=tag.split(" "); //输出标签名 System.out.println("<----"+tagSplit[1]+"---->"); //获取书籍信息 List circles=html.xpath("//li[@class='subject-item']/div[@class='info']/h2/a/text()").all(); List circleUrls=html.xpath("//li[@class='subject-item']/div[@class='info']/h2/a/@href").all(); //输出书籍信息 for (int k=0;k

3、控制台输出截图
WebMagic爬取豆瓣读书的书籍数据_第1张图片

这只是一个简单的例子,具体爬取数据需要分析html界面,从中获取我们想要的数据。

你可能感兴趣的:(JAVA后端,JAVA爬虫)