开放接口说明RxCrawler接口


interface RxCrawler 提供对目标网站操作和得到网页上元素的能力, 包括打开网页,基于网页上的XPath得到网页上对应的元素。

函数定义:

public void open(String url) throws RxCrawlerException;

打开url指定的网页,加载页面的超时时间默认为3秒钟

public void open(String url, String titleKeyword) throws RxCrawlerException;

打开url指定的网页,如果网页打开后的title与第二个输入参数titleKeyword不一致将会有异常RxCrawlerException抛出,意味着打开网页失败,加载页面的超时时间默认为3秒钟

public void open(String url, int waitSeconds) throws RxCrawlerException;

打开url指定的网页,并指定加载页面的超时时间,单位秒(s),当超过设定的时间未完全加载完网页时抛出RxCrawlerException。 该处设定时间的waitSeconds,会影响当前任务的后续操作,后续的所有网页加载的超时时间都是waitSeconds。 再次调用open时,会覆盖超时时间。

public void open(String url, String titleKeyword, int waitSeconds) throws RxCrawlerException;

打开url指定的网页,如果网页打开后的title与第二个输入参数titleKeyword不一致将会有异常RxCrawlerException抛出,意味着打开网页失败 ,并指定加载页面的超时时间(waitSeconds),单位秒(s),当超过设定的时间未完全加载完网页时抛出RxCrawlerException。 该处设定时间的waitSeconds,会影响当前任务的后续操作,后续的所有网页加载的超时时间都是waitSeconds。 再次调用open时,会覆盖超时时间。

public void refresh();

刷新当前页面.

public void back();

网页返回上一次访问的链接.

public RxNode getNodeByXpath(String xpath) throws RxCrawlerException;

在使用open函数打开网页后,使用xpath参数返回一个RxNode对象对应的是页面上找到的html元素。 如果要抓取的网页html元素文本太长,建议使用executeJsScript的方式抓取.

String script = “return document.getElementById(‘dutyDetail’).innerText;”

Object jsResult = crawler.executeJsScript(“return document.getElementById(‘kw’).value;”);

public RxSelectNode getSelectNodeByXpath(String xpath) throws RxCrawlerException;

在使用open函数打开网页后,使用xpath参数返回一个RxSelectNode对象对应的是页面上找到的Select类型的html元素。

public List<RxNode> getNodeListByXpath(String xpath) throws RxCrawlerException;

在使用open函数打开网页后,使用xpath参数返回RxNode对象List, 对应的是页面上找到的html元素列表。

public void scrollToTop() throws RxCrawlerException;

在使用open函数打开网页后,滚动页面到顶部

public void scrollToBottom() throws RxCrawlerException;

在使用open函数打开网页后,滚动页面到底部

public void scroll(int pixels) throws RxCrawlerException;

在使用open函数打开网页后,滚动页面多少个像素。pixels参数为正值时向下滚动,为负值向上滚动

public void scrollTo(RxNode node) throws RxCrawlerException;

在使用open函数打开网页后,滚动页面到指定的RxNode元素。该元素对应页面上的html元素,是通过getNodexxx函数得到的。

public void input(String xpath, String text) throws RxCrawlerException;

在使用open函数打开网页后,基于指定的xpath为对应的html元素输入文本。

public void clear(String xpath) throws RxCrawlerException;

在使用open函数打开网页后,有些网页会自动发送一些Ajax请求,基于指定的Ajax请求url可以获得该请求对应的RxHttpNetwork对象,通过该对象可以获得该请求和返回的值。

public RxHttpNetwork getHttpNetworkByURL(String url) throws RxCrawlerException;

基于输入的RxHttpRequest对象,复制生成一份RxHttpRequest对象。

public RxHttpRequest copyRxHttpRequest(RxHttpRequest rxHttpRequest);

基于输入的RxHttpRequest对象,发送http请求。

public RxHttpResponse send(RxHttpRequest rxHttpRequest);

在使用open函数打开网页后,获得当前浏览器打开的tab数量。

public int getCurTabs();

在使用open函数打开网页后,获得所有的cookies,为JSon格式。

public JSONObject getAllCookies() throws RxCrawlerException;

在使用open函数打开网页后,获得指定名称的cookie。

public String getCookieByName( String name );

在使用open函数打开网页后,删除指定名称的cookie。

public void deleteCookieByName( String name );

在使用open函数打开网页后,删除所有的cookies。

public void deleteAllCookies();

在使用open函数打开网页后,基于指定的xpath为对应的html元素清除文本。

public void inputVerifyCode(String verifyImageXpath, String verifyInputTextXpath)  throws RxCrawlerException;

在有验证码时候自动输入,参数verifyImageXpath为验证码图片xpath, verifyInputTextXpath为验证码输入框xpath

public boolean verifyGeeTest() throws RxCrawlerException;

处理滑块验证码,比如国家企业信用信息公示系统网站(http://www.gsxt.gov.cn/index.html)的验证码。

GeeTest滑动验证码是否破解成功,请注意如果verifyGeeTest返回false,请重新刷新页面, 输入查询的内容, 然后再次调用verifyGeeTest.

一般建议用户在for循环中调用多次直到通过滑动验证码校验.请注意每一次的循环中请重新输入查询内容后点击查询.

public boolean isAlertDisplayed() throws RxCrawlerException;

检查是否有Alert警告框弹出

public String getAlertText() throws RxCrawlerException;

当网页弹出警告框口,得到弹出框的文本

public void closeAlert() throws RxCrawlerException;

关闭页面中弹出的alert对话框

public void closeAlert(int waitSeconds) throws RxCrawlerException;

有时候需要在关闭弹出的alert对话框时候等待几秒钟,参数为等待时间

public boolean isNewTabOpened() throws RxCrawlerException;

当有时候点击网页上的链接时候,会打开新的Tab页而不是在原来的Tab上打开,对这种需求需要先调用该函数判断是否有新的tab页打开。然后调用switchToNewTab()函数切换到新打开的tab页,

在该Tab上操作完成后,再调用closeNewTab()函数关闭该Tab,这时会自动返回到前一个Tab页面上。

public void switchToNewTab() throws RxCrawlerException;

打开新的tab页,请参阅isNewTabOpened()函数说明

public void closeNewTab() throws RxCrawlerException;

关闭新的tab页,请参阅isNewTabOpened()函数说明

public void selectVerifyCode(String verifyImageXpath, String verifyButtonXpath)  throws RxCrawlerException;

如果验证码是需要选择图片,调用该函数可以自动点击图片验证码,参数verifyImageXpath为要验证的图片的Xpath,verifyButtonXpath为要点击确认的按钮的Xpath

public Object executeJsScript(String jsScript) throws RxCrawlerException;

执行一段javascript代码,参数jsScript为输入的javascript代码, 如果javascript有返回值,则可以在返回的Object里得到。

public String getPageSource() throws RxCrawlerException;

得到页面的html源代码

public String getTitle() throws RxCrawlerException;

得到页面的Title

public void sleepSeconds(int seconds);

当前插件程序暂停指定的秒数

public String takeScreenshot ( int appSeq, boolean isWatermark );

根据指定的appSeq,截图并打水印(isWatermark =false时不打水印),返回图片的文件名

public String uuPictureRecognition(String imageSrc) throws RxCrawlerException;

识别图片中的数字或者文字,这个方法不再推荐使用, 请使用imageRecognize(String imageXpath),腾讯识别为机器自动识别,如果有识别错误,请和瑞雪采集云团队联系.

public String imageRecognize(String imageXpath) throws RxCrawlerException;

识别图片中的数字或者文字

public String phoneImageRecognize(String imageXpath) throws RxCrawlerException;

识别电话号码图片,例如www.atobo.com.cn网站里的电话图片

public String phoneImageRecognize(String imageXpath, Website website) throws RxCrawlerException;

website 目前仅支持顺企网的电话号码图片识别 Website.ShunQi

获得一个CloseableHttpClient对象用于http client操作。

public CloseableHttpClient getHttpClient();

获得一个HtmlUnitWebClient对象用于HtmlUnit相关的操作。

public WebClient getHtmlUnitWebClient();

这个方法可以快速的获取一个URL的返回值,得到RxHttpNode对象后,
可以进一步查看返回的page source, JSON字符串或者做进一步的操作例如getText(), getAttribute。

public RxHttpNode doHttpGet(String url);

这个方法可以快速的获取一个URL的返回值,这个方法需要传入访问URL的header和cookie信息,
得到RxHttpNode对象后, 可以进一步查看返回的page source, JSON字符串或者做进一步的操作例如getText(), getAttribute。

public RxHttpNode doHttpGet(String url, Map<String, String> header, Map<String, String> cookie);

这个方法可以快速的获取一个URL的返回值,这个方法需要同时传入需要post的参数Map,
得到RxHttpNode对象后, 可以进一步查看返回的page source, JSON字符串或者做进一步的操作例如getText(), getAttribute。

public RxHttpNode doHttpPost(String url, Map<String, String> params);

这个方法可以快速的获取一个URL的返回值,这个方法需要传入需要post的参数Map和访问URL的header和cookie信息,
得到RxHttpNode对象后, 可以进一步查看返回的page source, JSON字符串或者做进一步的操作例如getText(), getAttribute。

public RxHttpNode doHttpPost(String url, Map<String, String> params, Map<String, String> header, Map<String, String> cookie);

这个方法传入Selector参数后(例如:”#J_ProductList > li > div”), 可以得到返回的RxHttpNode的对象,
可以进一步查看返回的page source, JSON字符串或者做进一步的操作例如getText(), getAttribute。

public List getRxHttpNodeBySelector(String selector);

根据传入的excel文件的url,获取该excel所有sheet的内容

public Map>> readExcelDataByUrl(String url);

按下的指定的keys(tab,alt等)一次,参数keys的值需要使用com.ruixuesoft.crawler.open.Keys的值

public void pressKeys(CharSequence... keys);

按下的keys(tab,alt等)若干次(由times指定),参数keys的值需要使用com.ruixuesoft.crawler.open.Keys的值

public void pressKeys(int times, CharSequence... keys);

获取打开页面的当前url

public String getCurrentUrl();