zoukankan      html  css  js  c++  java
  • python 爬虫大致思路梳理

    思维导图参考:
    
    



    一。requests模块总结:
    -requests模块:
        - UA伪装:反反爬策略
        - get请求:
            requests.get(url,headers,params,proxies)
        - post请求:
            requests.post(data)
        - ajax的get,post请求:
            - 结论:页面中先关的数据可以是动态加载获取。
        - 模拟登录:
            - 验证码:动态变化
            - username,pwd,code
            - 云打码,打码兔
            - cookie:服务器用来使用cookie记录客户端的相关状态。
                - 手动处理:
                    将cookie添加到headers
                - 自动处理:
                    使用会话对象(requests.Session())
                    会话对象可以向requests模块一样进行请求的发送。
             - 代理:
                - 代理的类型:
                    - http
                    - https
                 - requests.get(proxies={'http':'ip:port'})
    二。selenium介绍
    selenium:专门用来爬取网页中的动态加载的数据
        - 基于浏览器自动化的一个模块
        - 使用流程:
            - pip install selenium
            - 下载一个浏览器的驱动程序
            - 实例化一个浏览器对象
            - PhantomJs 无可视化界面的浏览器

    三。scrapy 项目框架、

    下载twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

    下载对应的版本要在cmd(管理员身份打开):pip3 install  软件文件名.whl

        - 框架:项目模板(集成了很多功能,具有很强的通用)
        - 环境安装:
            a. pip3 install wheel
            # Twisted:异步的框架
            b. 下载twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
            c. 进入下载目录,执行 pip3 install Twisted‑17.1.0‑cp35‑cp35m‑win_amd64.whl
    
            d. pip3 install pywin32
            e. pip3 install scrapy
        - 使用:
            - 创建一个工程:scrapy startproject xxxPro
            - 创建一个爬虫文件(爬虫文件放置在spiders目录下):
                - cd xxxPro
                - scrapy genspider spiderName www.xxx.com
            - 执行工程:
                - scrapy crawl spiderName
         - 持久化存储:
            - 基于终端指令:scrapy crawl spiderName -o fileName.csv
                特性:只可以将parse方法的返回值写入到磁盘文件(固定格式的文件)中。
            - 基于管道:
                - piplelines:涉及持久化存储相关的操作都必须写在管道文件(类)中
                - 编码流程:
                    - 在爬虫文件中进行数据解析
                    - 将解析到的数据封装存储到item类型的对象
                    - 使用yield将item提交给管道
                    - 管道类中process_item负责接收item对象,负责将item进行持久化存储
                    - 在配置文件中开启管道
         - 中间件(下载中间件)
            - 作用:批量拦截scrapy工程中所有的请求和响应
            - 拦截请求:
                - 处理请求的UA
                - 处理请求的代理IP
            - process_request:拦截正常的请求对象
            - process_response:拦截响应对象
            - process_exception:拦截发生异常的请求
    
            - 使用中间件设置请求的UA:
                - request.headers['User-Agent'] = 'xxx'
            - 设置代理:
                - request.meta['proxy'] = 'http://ip:port'
         - 请求传参:
            -使用场景:当请求/解析的数据不在同一张页面中的时候
            - Request(url,callback,meta={xxx:xxx})meta就会传递给callback指定的方法
    
            - 日志等级:
                - 在settings中进行如下配置:LOG_LEVEL = 'ERROR'   LOG_FILE = './log.txt'
         - CrawlSpider:
            - 专门用户全栈数据解析
            - 使用流程:
                - 创建工程
                - 创建爬虫文件:scrapy genspider -t crawl SpiderName www.xxx.com
        - 增量式爬虫:
            - 检测网站数据更新的情况,只爬取最新更新出来的数据。
            - 核心:去重











  • 相关阅读:
    python不同包之间调用时提示文件模块不存在的问题
    adb shell 查看内存信息
    adb shell top 使用
    Android读取logcat信息
    父类的引用对象指向子类的对象
    我的阿里梦——淘宝前端必备技能
    我也做了一个1/4圆形菜单
    可编辑tab选项卡
    canvas 之
    canvas之----浮动小球
  • 原文地址:https://www.cnblogs.com/iamjianghao/p/10843306.html
Copyright © 2011-2022 走看看