你的位置:首页 > 软件开发 > Java > HtmlUnit 开发网络爬虫(一)

HtmlUnit 开发网络爬虫(一)

发布时间:2015-05-23 00:08:34
网络爬虫第一个要面临的问题,就是如何抓取网页,抓取其实很容易,没你想的那么复杂,一个开源HtmlUnit包,几行代码就OK啦!通常在一个页面中会包含别的Url,在别的Url当中又会包含更多的Url。如果我们要对与该站点相关的Url全部都抓取过来。就相当于我们要对跟这个站有关的Ur ...

网络爬虫第一个要面临的问题,就是如何抓取网页,抓取其实很容易,没你想的那么复杂,一个开源HtmlUnit包,几行代码就OK啦!

通常在一个页面中会包含别的Url,在别的Url当中又会包含更多的Url。如果我们要对与该站点相关的Url全部都抓取过来。就相当于我们要对跟这个站有关的Url进行搜索。

 

常用的搜索算法有bfs和dfs,考虑到网页上的Url的重要程度还是以广度来分布的,所以这里采用bfs来搜索url。

到这里又会产生一些问题:

1,搜索过的url,并不需要重新访问

总之我们尽可能的根据实际的情况得到自己想要的url~所以我们尽可能编写合法的剪枝算法。

下面添上自己胡乱写的算法的框架,写的不好哈哈。

import java.io.IOException;import java.net.MalformedURLException;import java.util.HashMap;import java.util.HashSet;import java.util.LinkedList;import java.util.Map;import java.util.Queue;import java.util.Set;import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;import com.gargoylesoftware.htmlunit.WebClient;import com.gargoylesoftware.htmlunit.html.HtmlAnchor;import com.gargoylesoftware.htmlunit.html.HtmlPage;//引用HtmlUnitpublic class MyWalker {  static int num = 0;//暂时用num进行限制    final static WebClient webClient = new WebClient();  static Queue<String> Q = new LinkedList<String>();//存放被抓取的Url  static Set<String> linkUrl = new HashSet<String>();  static Map<String,Boolean> flagMap = new HashMap<String,Boolean>();//标记Url是否访问过    static{    webClient.getOptions().setCssEnabled(false);    webClient.getOptions().setJavaScriptEnabled(false);  }    private static String baseUrl = "http://xjasc.gov.cn";    //拼凑出可再次访问的url, 这里的拼凑是不完整的  private static String createUrl(String current, String u){

原标题:HtmlUnit 开发网络爬虫(一)

关键词:HTML

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。