`
zhanghu
  • 浏览: 7738 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

Arachnid Web Spider Framework2

阅读更多

PageInfo.java是一个页面对象。它抽象了页面的主要元素,并且封装了取得那些元素的方法。

public URL getUrl() { return(url); }\\取得页面的url


 public URL getParentUrl() { return(parentUrl); }\\


 public String getTitle() { return(title); }


 public URL[] getLinks() { return(links); }
 public URL[] getImages() { return(images); }
 public String getContentType() { return(contentType); }
 public boolean isValid() { return(valid); }
 public int getResponseCode() { return responseCode; }

 中间有个最核心的方法就是

public void extract(Reader reader) throws IOException
 {
  // Note: contentLength of -1 means UNKNOWN
  if (reader == null  || url == null ||
   responseCode != HttpURLConnection.HTTP_OK ||
   contentLength == 0 || contentType.equalsIgnoreCase(HTML) == false) { 
   valid = false;
   return;
  }
  WebPageXtractor x = new WebPageXtractor();
  try { x.parse(reader); }
  catch(EOFException e) {
   valid = false;
   return;
  }
  catch(SocketTimeoutException e) {
   valid = false;
   throw(e);
  }
  catch(IOException e) {
   valid = false;
   return;
  }
  ArrayList rawlinks = x.getLinks();
  ArrayList rawimages = x.getImages();
  
  // Get web page title (1st title if more than one!)
  ArrayList rawtitle = x.getTitle();
  if (rawtitle.isEmpty()) title = null;
  else title = new String((String)rawtitle.get(0));
  
  // Get links
  int numelem = rawlinks.size();
  if (numelem == 0) links = null;
  else {
   ArrayList t = new ArrayList();
   for (int i=0; i     String slink = (String)rawlinks.get(i);
    try {
     URL link = new URL(url,slink);
     t.add(link);
    }
    catch(MalformedURLException e) { /* Ignore */ }
   }
   if (t.isEmpty()) links = null;
   else links = (URL[])t.toArray(dummy);
  }
  
  // Get images
  numelem = rawimages.size();
  if (numelem == 0) images = null;
  else {
   ArrayList t = new ArrayList();
   for (int i=0; i     String simage = (String)rawimages.get(i);
    try {
     URL image = new URL(url,simage);
     t.add(image);
    }
    catch(MalformedURLException e) { }
   }
   if (t.isEmpty()) images = null;
   else images = (URL[])t.toArray(dummy);
  }

  // Set valid flag
  valid = true;
 }

这个方法主要是调用了WebPageXtractor来处理web页面。

然后把页面的各个属性的值都返回。

WebPageXtractor是继承了SimpleHTMLParser的方法,所以对页面元素进行分解是SimpleHTMLParser实现的

重点分析一下SimpleHTMLParser的一些方法。

分享到:
评论

相关推荐

    zhizhu.zip_Java spider_Simple HTML parser_spider

    一个基于Java的web spider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Web spiders并能够在Web站上的每个页面被解析之后增加几行代码调用。

    Arachnid_src.zip_Arachnid

    《Arachnid源码解析与网络实验探索》 在信息技术领域,开源软件和共享资源扮演着至关重要的角色,它们促进了技术的快速发展和创新。今天,我们将深入探讨一个名为"Arachnid"的项目,它是网络实验的重要参考资料。...

    Arachnid:用Java编写的Web爬行应用

    **Arachnid:一个用Java实现的Web爬虫应用** 蛛形纲,或者在这个语境中,是指一种软件工具,即Arachnid,它是一个基于Java的Web爬虫应用程序。Web爬虫,也称为网络抓取器或网络爬行器,是一种自动浏览互联网并收集...

    Laravel开发-arachnid4laravel

    2. **推荐系统**:基于用户行为和物品关联的推荐算法,图形数据库和 Arachnid4Laravel 可以提供高效的解决方案。 3. **知识图谱**:构建和维护知识图谱,如实体关系、概念层次结构,图形数据库和 Arachnid4Laravel ...

    PyPI 官网下载 | arachnid-0.1.6.tar.gz

    《PyPI官网下载:arachnid-0.1.6.tar.gz——深入解析Python库与分布式系统》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了丰富的Python库供用户下载和使用。在本次讨论中,我们关注的是一个...

    java爬虫程序

    Arachnid:是一个基于Java的web spider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Web spiders并能够在Web站上的每个页面被解析之后增加几行代码调用...

    Arachnid:Neo4j PHP OGM

    Spiders 管理网络,Arachnid 管理 Neo4J Graphs。 这个库很大程度上基于 Louis-Philippe Huberdeau 在他的所做的出色工作。 主要区别在于,此 OGM 允许您定义关系对象以及节点对象,从而使您可以非常轻松地将属性...

    Arachnid:网络蜘蛛和 reddit 机器人

    **Arachnid: 网络爬虫与Reddit机器人** `Arachnid`是一个用Python编写的网络爬虫工具,其名称来源于生物学中的蛛形纲动物,象征着它在网络世界中像蜘蛛一样进行数据抓取。它专为高效地抓取和处理网页信息而设计,...

    Arachnid Engine (cms)-开源

    这个引擎的名字可能是来源于蜘蛛(Arachnid)的概念,因为蜘蛛在互联网中象征着搜索引擎爬虫,而CMS则与网页内容的抓取和管理相关。作为一个开源项目,它的源代码可供公众查看、使用和改进,这鼓励了社区协作和持续...

    蜘蛛:强大的网络抓取框架水晶

    2. **网络抓取(Bot/Crawler)**:网络抓取是自动遍历互联网并收集信息的过程,通常用于数据挖掘、搜索引擎索引或网站分析。Arachnid作为网络爬虫框架,允许用户编写规则来指定如何导航网页,获取所需的数据,并处理...

    开源爬虫介绍及下载链接

    7. **Arachnid**: 一个基于Java的Web蜘蛛框架,提供了简单的HTML解析器,用户可以通过实现其子类轻松创建自己的Web爬虫。 8. **LARM**: 针对Jakarta Lucene的搜索解决方案,LARM能为文件、数据库和Web站点建立索引...

    arachnid:检索在给定网站上找到的所有唯一内部链接,并提取与SEO相关的信息-支持基于javascript的网站

    乔希·洛克哈特(Josh Lockhart)为Composer和Packagist修改了原始博客文章的代码(获得许可),并更新了语法以符合PSR-2编码标准。 如何安装 您可以使用安装此库。 将其放入您的composer.json清单文件中: { ...

    爬虫程序爬虫程序 java 数据挖掘

    #### 2. URL管理策略 - **跨域访问控制**:`setWalkToOtherHosts(boolean walk)`决定是否允许爬虫访问其他域名下的页面,默认为不允许。 - **URL白名单配置**:可以通过`setAllowedURLs(Vector<String> allowed)`来...

    Best Darts to Buy Reviews-crx插件

    评论包括Arachnid Cricket Pro系列,dartslive 200S,sunlight blast 6000等。 从Dart,我们只审查最好的作品,包括bottelsen系列,蜘蛛,黑寡妇,KODart等等。 一切都可以轻松满足您的需求。 如果您对自己的Dart...

    triggertrap-ada

    为 Kickstarter 项目 (tri.gg/kickstarter2) 创建了初始原型,并完成了大量额外工作以将产品推向市场。 Triggertrap 未能成功将 Ada 投入生产,但正在发布在 GPLv3 开源许可下完成的工作。 有关在哪里可以找到 Ada ...

    U课程+「U-Cursos +」-crx插件

    2.继续播放视频。 Este软件esta许可在GNU GPL v3上运行,您可以从一个整体上了解到。 GitHub仓库:https://github.com/arachnid92/U-Cursos-Plus Autor:ManuelOlguín(aka Arachnid92),Intutierante deIngenier...

    StackOverflow that 90's Theme-crx插件

    基于https://stackapps.com/questions/8287/2019-april-fools-day-retro-theme源代码:https://github.com/Alexrgs/Retro_StackOverflow特别感谢/感谢https://github.com / a-stone-arachnid / Time-Travel-Mode ...

    sggc:样板和首个“固体气体高尔夫比赛”的测试

    git clone https://github.com/arachnid/sggc.git npm install 用法 在contracts目录中实施一个或多个contracts 。 用truffle test进行相应的truffle test ; 例如,如果您实现了排序,请运行: truffle test test...

Global site tag (gtag.js) - Google Analytics