zoukankan      html  css  js  c++  java
  • 网络爬虫经验小结

    一 知识域/学习路径

    1.1 初级阶段

      java: net(网络编程)、IO、多线程(含:线程池)、正则表达式、集合、JDBC/数据库等

      python: urllib.request

      NodeJs/JavaScript: http

    1.2 中级阶段

      java: Jsoup(优势:HTML DOM解析)、HttpClient(优势:下载/IP代理等)、OKHttp、HTML Parser(优势:解析)、JavaScript/HTML(函数、JSON、Ajax、JacaScript DOM)等

      NodeJs/JavaScript: express

    1.3 进阶

      java: web自动化测试框架selenium【WebDriver/ChromeDriver】(优势:下载/解析)

      python: scrapy、web自动化测试框架selenium(WebDriver/ChromeDriver)

      NodeJs/JavaScript: web自动化测试框架(PhantomJS/ selenium)

    1.4 高级阶段

      java: Heritrix网络爬虫框架

    一个由 java 开发的、开源的网络爬虫,用户可以使用它来从网上抓取想要的资源。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取逻辑。

    1.5 涉及经验

      计算机网络(网络编程/ HTTP&TCP协议)

        HTTP报文

          报文头:

            请求方法: GET/POST .etc

            遵循协议: HTTP / HTTPS .etc

          请求体

        网络抓包与调试: Chrome开发者工具、Fiddle、Postman等

        IP代理

      文件操作  

      数据库 / JDBC  

      数据结构(栈/队列/List/Set/Map/深度优先/广度优先等)

      Cookie/Session

      反爬虫机制、模拟登陆

      多线程编程

        线程池/多线程爬行

      分布式爬虫

      可能涉及技巧:JS注入、模拟鼠标滑动、验证码识别(英文字母/数字/汉字/物品识别等)、延时请求(降低请求频率)等

      可能涉及语言:Python、Java、JavaScript、HTML、CSS等

      网页正文提取方法:Jsoup(基于 HTMLO DOM解析树)等、Html2Article(基于行块分布函数的通用正文抽取算法)

    二 入门级演示

    2.1 Python简易Demo

    由于Python3合并URLib与URLlib2统一为URLlib,Python3将urlopen方法放在了urllib.request对象下。

    官方文档:https://docs.python.org/3/library/urllib.request.html#module-urllib.request

    在实现爬取网页过程中,屡次执行以下脚本:

    #coding:UTF-8
    import random;
    import urllib.request;# 不推荐使用 import urllib
    rawdata =
    urllib.request.urlopen('http://www.111cn.net/phper/python/68713.htm').read();
    
    file = open("testfile","w+");
    file.write(str(rawdata));

    三 参考文档

      [1] Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)

      [2] 基于行块分布函数的通用正文抽取算法.陈鑫.哈尔滨工业大学社会计算与信息检索研究中心

      [3] 网页正文提取——Html2Article

  • 相关阅读:
    37. Sudoku Solver(js)
    36. Valid Sudoku(js)
    35. Search Insert Position(js)
    34. Find First and Last Position of Element in Sorted Array(js)
    33. Search in Rotated Sorted Array(js)
    32. Longest Valid Parentheses(js)
    函数的柯里化
    俞敏洪:我和马云就差了8个字
    vue路由传值params和query的区别
    简述vuex的数据传递流程
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/7420583.html
Copyright © 2011-2022 走看看