• Atitit.网页爬虫的架构总结


    Atitit.网页爬虫的架构总结

    1. 总数的结构..(接口方法) 1

    2. 获得页数 1

    3. 跳页处理(接口方法) 2

    4. 单个的页面处理(接口方法) 2

    4.1. 获得页面url 3

    4.2. 获得页面html 3

    4.3. 获得list 3

    4.4. 处理单个的数据条目 3

    5. 调用 4

    6. 日志的实现 4

    7. 参考 4

    1. 总数的结构..(接口方法)

     public String exec( ) throws IOException     {

     

    fx=new filex(fileName);

    int pages=getpage();

    for(int i=1;i<=pages;i++)

    {

    if(i<pageStart)

    continue;

    try {

    singlePage(i);

    catch (Exception e) {

    e.printStackTrace();

    }

    }

    fx.close();

     

    2. 获得页数

    getpage();

     

     作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

     

    3. 跳页处理(接口方法)

    if(i<pageStart)

    continue;

     

    4. 单个的页面处理(接口方法)

     */

    private void singlePage(int pagethrows ConnEx, NoRztEx, ParseLsitEx {

     String html = null;

    try {

    String api = (StringgetCurPageUrl(page);

    //http://www.czvv.com/k5bu6562Rp0c0cc0s0m0e0f0d0.html

     websitex wc = new websitex();

     wc.refer=" 

    html = wc.WebpageContent(api"utf-8"15);

    }   catch (Exception e) {

    e.printStackTrace();

    throw new ConnEx(e.getMessage());

    }

    //================trace

    if (new File("C:\\traceOk").exists())

    filex.save_safe(html"c:\\rztTrace.html");

     

    List li=getList(html);

    for(Object obj:li)

    {

    try {

    processItem(obj);

    catch (Exception e) {

    e.printStackTrace();

    }

    }

    4.1. 获得页面url

    4.2. 获得页面html

    4.3. 获得list

    private List getList(String htmlthrows NoRztEx, ParseLsitEx {

    try {

    Document doc = null;

    doc = Jsoup.parse(html);

    Elements tabs = doc.getElementsByTag("ol");

     

    return tabs;

    catch (Exception e) {

    e.printStackTrace();

    //System.out.println("norzt:" + addr);

    throw new ParseLsitEx("noRzt");

    }

     

     

    4.4.  处理单个的数据条目

    private void processItem(Object obj) {

    Element item=(Elementobj;

      String name=item.getElementsByClass("resultName").get(0).text();

      Element e=  item.getElementsByClass("l_r").get(0);

     String tel=e.child(0).text();

     String lyesyiren=e.child(1).text();

     String addr=e.child(2).text();

     

    String line = name+","+tel+","+lyesyiren+","+addr;

    fx.appendLine_flush_safe(line);

    System.out.printlnline);

    }

    5. 调用

     

    WebInfoX x=new WebInfoX();

    x.fileName=args[0];// "c:\\r2.csv";

    x.pages=Integer.parseInt(args[1]);

    x.pageStart=Integer.parseInt(args[2]);;

    x.exec( );

    System.out.println("--fi");

    }

     

    6. 日志的实现

    使用默认的console最简单的..或者使用queue+textarea....麻烦的

    7. 参考

    paip.c++ qt 网页爬虫 的 网络编程 总结 - attilax的专栏 博客频道 - CSDN.NET.htm

  • 相关阅读:
    练习44-继承和组合
    CF 1329B Dreamoon Likes Sequences
    CF 1362C Johnny and Another Rating Drop
    CF 1391D 505
    CF 1383B GameGame
    CF1360F Spy-string(暴力)
    Java 之 关键字与标识符
    Java 之 Java 注释与 API
    Java 之 第一个Java程序
    Java 之 Java开发环境
  • 原文地址:https://www.cnblogs.com/attilax/p/15198986.html
Copyright © 2020-2023  润新知