java爬虫系列(2)-爬行动态网页
准备工作
如果是新手,建议使用seimiagent+seimicrawler的爬行方法,非常容易上手,轻松爬行动态网页,初步上手10分钟以内。
项目地址https://github.com/a252937166/seimicrawler
网页分析工具地址https://github.com/a252937166/seimiagent
根据系统选择所需的文件,启动网页解析器下载好seimiagent
,根据自己的操作系统,如果是windows
,就用seimiagent.exe
,如果是linux
,就选择seimiagent
,mac
版本还没有,我的话一般会把seimiagent
把它放在自己的linux服务器上。
以linux
例如,进入文件所在目录并指定8000
端口,./seimiagent -p 8000
,即可启动。
图(1)
seimi的项目配置.properties
redis.host=127.0.0.1redis.port=6379redis.password=database.driverClassName=com.mysql.jdbc.Driverdatabase.url=database.username=database.password=seimiAgentHost=127.0.0.1seimiAgentPort=8000
找到此配置文件,修改seimiAgentHost
和seimiAgentPort
为自己的地址信息。
package com.ouyang.crawlers;import cn.wanghaomiao.seimi.annotation.Crawler;import cn.wanghaomiao.seimi.def.BaseSeimiCrawler;import cn.wanghaomiao.seimi.struct.Request;import cn.wanghaomiao.seimi.struct.Response;import cn.wanghaomiao.xpath.model.JXDocument;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Value;/** * 这个例子演示了如何使用SeimiAgent来捕获复杂的动态页面信息 * @author 汪浩淼 et.tw@163.com * @since 2016/4/14. */@Crawler(name = "seimiagent")public class SeimiAgentDemo extends BaseSeimiCrawler{ /** * resource/config/seimi.properties配置方便更换,当然,您也可以根据情况使用自己的统一配置中心等服务 */ @Value("${seimiAgentHost}") private String seimiAgentHost; @Value("${seimiAgentPort}") private int seimiAgentPort; @Override public String[] startUrls() { return new String[]{"https://www.baidu.com"}; } @Override public String seimiAgentHost() { return this.seimiAgentHost; } @Override public int seimiAgentPort() { return this.seimiAgentPort; } @Override public void start(Response response) { Request seimiAgentReq = Request.build("http://manhua.fzdm.com/2/889/","getHtml") .useSeimiAgent()// 告诉Seimiagent是否使用cookie作为这个请求,如果没有使用当前crawler关于cookie的使用条件作为默认值。// .setSeimiAgentUseCookie(true) ///设置所有load完成后,给Seimiagent多少时间执行js并渲染页面,单位为毫秒 .setSeimiAgentRenderTime(5000); push(seimiAgentReq); } /** * 打印网页信息 * @param response */ public void getHtml(Response response){ try { System.out.println(response.getContent()); } catch (Exception e) { e.printStackTrace(); } }}
找到这个demo文件,注意.useSeimiAgent()
,这意味着需要使用seimiagent
除了分析动态网页外,还可以设置cookie
,param
,meta
我们使用这些参数getHtml()
这个回调函数打印网页信息,比较一下,看看分析是否成功。
我们使用chrome浏览器network
查看网页的原始代码。
图(2)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1//DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="utf-8"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="Content-Language" content="utf-8" /><meta content="all" name="robots" /><title>海贼王889话 风之动漫</title><meta name="keywords" content="海贼王889话 " /><meta name="viewport" content="width=device-width, initial-scale=1"><meta http-equiv="Cache-Control" content="no-transform" /><meta http-equiv="Cache-Control" content="no-siteapp" /><meta name="applicable-device" content="pc,mobile" /><meta name="HandheldFriendly" content="true" /> <meta property="og:title" content=“海贼王889字”/><meta property="og:type" content="book"/><meta property="og:url" id="readurl" content="http://manhua.fzdm.com/2/889/" /><link rel="stylesheet" href="//static.fzdm.com/pure/pure-min.css"><!--[if lte IE 8]> <link rel="stylesheet" href="//static.fzdm.com/pure/grids-responsive-old-ie-min.css"><!--[if lte IE 8]> <link rel="stylesheet" href="//static.fzdm.com/pure/grids-responsive-old-ie-min.css"><![endif]--><!--[if gt IE 8]><!--> <link rel="stylesheet" href="//static.fzdm.com/pure/grids-responsive-min.css"><!--<![endif]--><link rel="stylesheet" href="//static.fzdm.com/pure/fzdm.css"><link rel="icon" href="//static.fzdm.com/favicon.ico" mce_href="//static.fzdm.com/favicon.ico" type="image/x-icon"><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge"><link rel="apple-touch-icon" href="//static.fzdm.com/apple-touch-icon-144x144.png" /><style>.logo { top: -2px; height: 70px; overflow: hidden;}.logo img{height:77px}#header { height: 70px;}#header ul { top: 8px;} .pure-menu.pure-menu-open, .pure-menu.pure-menu-horizontal li .pure-menu-children { text-align: left; height: 70px; background: none; /* border: 1px solid #b7b7b7; */ }</style><script>var _hmt = _hmt || [];(function() {var hm = document.createElement("script");hm.src = "//hm.baidu.com/hm.js?cb51090c10cda176fa17fa92c3dfc;var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);})();</script></head><body> <!--[if lt IE9]> <script src="//static.fzdm.com/html5shiv.min.js"></script> <![endif]--><script src="//static.fzdm.com/jquery-1.9.1.min.js?[endif]--><script src="//static.fzdm.com/jquery-1.9.1.min.js?v=1"></script><script src="//static.fzdm.com/fzdm.js?v=1"></script><script src="//static.fzdm.com/u.js"></script><script src="//dup.baidustatic.com/js/dm.js"></
本文是转载内容,我们尊重原作者对文章的权利。如有内容错误或侵权行为,请联系我们更正或删除文章。