使用 js 实现统计页面标签数量的方法步骤全解析
592
2022-10-26
CrawlerArtifact,是一种通用爬虫框架,为网络爬虫开发提供了多种简洁实用的框架封装
CrawlerArtifact爬虫抓取框架使用说明
qq交流群: 237558423
Revised by LiuZhiXiong
CrawlerArtifact,是一种通用爬虫框架,为网络爬虫开发提供了多种简洁实用的框架封装,包括HttpCrawler(底层为HttpClient)、 HtmlUnit、SeleniumAppIUM等。并在此基础上,增加了一些特色功能,如缓存,请求重试,监控统计信息等。
##如何使用 无论打算使用哪种封装框架,请先完成以下步骤 1~3:
1、添加maven依赖
2、添加DTD约束文件
(1)若为开发环境,将DTD文件拷贝至项目根目录 (2)若为测试环境或线上环境tomcat服务,将DTD文件拷贝至tomcat/bin目录
3、添加全局配置文件至 src/main/resource或src/test/resource下,格式为
4、按照步骤3的mappers配置的mapper.xml路径,在对应resource路径下建立相应的mapper.xml文件,格式如下:
5、按照mapper标签的namespace配置创建接口,例如按照上面配置,在com.travelsky.umeckidelay.mappers包下建立JdMapper接口
public interface JdMapper {}
6、根据配置的schedule,get,post,option,head,put,delete标签的id,建立相应的方法,返回值为Response
public interface JdMapper { Response login();}
7、给mapper添加@Crawler注解,选取抓取器类型,value值为CrawlerType.HTTPCLIENT,CrawlerType.HTMLUNIT,CrawlerType.SELENIUM
@Crawler(CrawlerType.HTTPCLIENT)public interface JdMapper { Response login();}注:若不添加此注解,则采用mapper标签的crawlertype属性配置选取抓取器,若crawlertype属性未配置,则采用CrawlerType.HTTPCLIENT作为抓取器
8、为对应方法添加@Url,@RequestMethod,@Charset注解
@Crawler(CrawlerType.HTTPCLIENT)public interface JdMapper { @Url("https://jd.com/") @Charset(CharSetType.UTF8) @RequestMethod(HttpMethodType.GET) Response login(); }注:@Url注解值为url字符串 @Charset:值为CharSetType枚举类型 @RequestMethod值为HttpMethodType枚举类型 这部分注解值若与mapper.xml配置内容重复,则覆盖mapper.xml相关内容
9、添加@Start注解
@Crawler(CrawlerType.HTTPCLIENT)public interface JdMapper { @Start @Url("https://jd.com/") @Charset(CharSetType.UTF8) @RequestMethod(HttpMethodType.GET) Response login(); }注:若该方法对应请求为SVC中的首次请求,需添加@Start注解
10、spring svc.xml配置
11、创建SVC并在spring svc.xml配置
public class JdSVC implements IDelayWithChangeSVC{ @Resource JdMapper jdMapper; @Session @Proxy @Override public CrawlerResult jd_login(String sessionId){ Response response = jdMapper.login(); CrawlerResult crawlerResult = new CrawlerResult(); crawlerResult.setResultCode(1); crawlerResult.setProxy(response.getProxy()); return crawlerResult; }}
12、在SVC方法添加@Session和@Proxy(可选)
public class JdSVC implements IDelayWithChangeSVC{ @Resource JdMapper jdMapper; @Session @Override public CrawlerResult getFlightList(String sessionId){ Response response = jdMapper.getFlightList_login(); CrawlerResult crawlerResult = new CrawlerResult(); crawlerResult.setResultCode(1); crawlerResult.setProxy(response.getProxy()); return crawlerResult; }}注:@Session注解表示可以按照上次抓取环境继续抓取,需遵守相应规约(见文章末尾<几个约束>第(1)条)
13、Mapper接口的方法内传参
Response getFlightList_login(@Url String url); 方法参数注解类型分为五种: @Url:对应形参类型为String @Headers:对应形参类型为Map或者String[]。若为Map,则与mapper.xml配置合并,若重复,则覆盖;若为String[]则按照{index}格式对mapper.xml文件内容赋值 @Params:对应形参类型为Map或者String[]或String。若为Map,则与mapper.xml配置合并,若重复,则覆盖;若为String[]则按照{index}格式对mapper.xml文件内容赋值,若为String则忽略mapper.xml配置内容。 @Cookies:对应形参类型为LoginCrawlerCookie @Proxy:对应形参类型为String或HttpHost
几个约束
(1)若需要根据上次抓取上下文继续抓取,需要添加@Session注解,同时SVC方法形参格式满足:(1)会话ID的形参名必须为SessionID,不区分大小写,形参位置无要求,形参个数无要求;或者(2)形参个数为1个,形参类型为Java Bean对象,该对象包含成员变量SessionID,不区分大小写,并包含get,set方法(2)SVC的Mapper成员变量名称必须以mapper结尾(3)Mapper接口内方法名称必须以SVC内方法名作为前缀,后缀根据url自己取名称,中间以_分隔,例如SVC方法名为login(),url为http://member.com,则mapper接口内方法名取名为login_member()(4)若xml中配置url值包含 & 符号,将 & 改为 &
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~