zoukankan      html  css  js  c++  java
  • <python>简单的python练习题(21-30)

    #21.cookie和session的区别
    '''
        1.cookie数据存放在客户的浏览器上,session数据存放在服务器上
        2.cookie不是很安全,可以通过分析本地cookie组成伪造cookie,session更安全
        3.session会在一定时间保存在服务器上.当访问增多,会比较占用服务器性能,考虑减轻服务器性能,应当使用cookie
        4.单个cookie保存数据不能超过4K,很多浏览器都限制一个站定最多保存20个cookie
        建议:将登陆信息等重要信息保存在session
            其他信息如果需要保留,可以放在cookie中
    '''
    #22.创建简单的TCP服务器需要的流程
    '''
        1.socket创建一个套接字
        2.bind绑定ip和port
        3.listen使用套接字变为被动链接
        4.accept等待用户链接
        5.recv/send接收发送数据
    
    '''
    #23.scrapy和scrapy-redis有什么区别?为什么选择redis数据库
    '''
        1.scrapy是一个python爬虫框架,爬取效率高,具有高度定制性,但不支持分布式
        scrapy-redis一套基于Redis数据库,运行在scrapy框架上的组件,可以让scrapy支持分布式策略
        Slaver端共享Master端redis数据库里的item队列、请求队列和请求指纹集合。
        2.因为redis支持主从同步,而且数据缓存在内存中,基于redis的分布式爬虫,对请求和数据的高频读取效率非常高
    '''
    #24.你用过爬虫框架或模块有哪些?谈谈他们的区别或优缺点
     '''
        urllib,urllib2
        requests:是一个HTTP库, 它只是用来,进行请求,对于HTTP请求,他是一个强大的库,下载,解析全部自己处理,灵活性更高,高并发与分布式部署也非常灵活,对于功能可以更好实现.
        scrapy:是封装起来的框架,他包含了下载器,解析器,日志及异常处理,基于多线程, twisted的方式处理,对于固定单个网站的爬取开发,有优势,但是对于多网站爬取 100个网站,并发及分布式处理方面,不够灵活,不便调整与括展。
        优点:scrapy 是异步的
        采取可读性更强的xpath代替正则
        强大的统计和log系统
        同时在不同的url上爬行
        支持shell方式,方便独立调试
        写middleware,方便写一些统一的过滤器
        通过管道的方式存入数据库
        缺点:基于python的爬虫框架,扩展性比较差
    
    '''
    #25.描述下scrapy框架的运行机制
    '''
        1.从start_urls里获取第一批url并发送请求,请求由引擎交给调度器入请求队列,
        2.调度器将请求队列里的请求交给下载器去获取请求对应的响应资源,
        3.调度器将响应交给自己编写的解析方法做提取处理:1. 如果提取出需要的数据,则交给管道文件处理;
        4.如果提取出url,则继续执行之前的步骤(发送url请求,并由引擎将请求交给调度器入队列...),直到请求队列里没有请求,程序结束
    '''
    #26.写爬虫是多线程好还是多进程好?为什么?
    '''
        按照不同问题进行处理
            1.IO密集型代码(文件处理,网络爬虫),多线程能有效提升效率(单线程会造成IO等待,多线程能自动切换,不浪费CPU资源)
            2.机器好,网络好,可以使用多进程
    
    '''
    #27.常见反爬虫和应对方法
    '''
        1.通过headers反爬虫
            检验headers中的User-Agent
            检验headers中的Referer
            解决办法:添加headers,将浏览器中User-Agent复制到爬虫的Headers中;或者将Referer值修改为目标网站域名
        2.基于用户行为反爬虫
            检测同一IP段时间内多次访问同一页面.或者同一账户段时间内进行多次相同操作
            解决办法:加ip代理,使用网上公开的代理IP,请求延时,改变爬取行为
        3.动态页面的反爬虫
            爬取的页面通过ajax请求得到或者通过JavaScript生成
            解决办法:抓包工具Fiddler对网络请求进行分析,找到ajax请求,模拟ajax请求
                模拟浏览器访问:selenium+phantomJS
        4.验证码反爬虫
            通过验证码去限制爬虫访问---只要不是12306这种
            解决办法:scrapy自带验证码分析,机器学习的方法分析验证码图片进行处理,外部付费处理验证码,打码软件处理
    '''
    #28爬虫在向数据库存数据和结束都会发一条消息,是scrapy哪个模块实现的
    '''
        Item Pipeline   Scarpy的信号处理使用的是dispatch模块
    '''
    #29.爬虫如何进行数据去重,说一下具体的算法依据
    '''
        1.通过MD5生成电子指纹来判断页面是否改变
        2.nutch去重.nutch中的digest会采集每个网页内容的32位哈希值,digest的哈希值完全一样,说明网页完全相同
    '''
    #30.简述numpy和pandas的区别?分别的应用场景
    '''
        Numpy   纯粹数学计算
        pandas  以矩阵为基础的数据计算
    '''
    

      

  • 相关阅读:
    WPF 复制和粘贴
    WPF控件模拟双击事件
    WPF获取鼠标当前位置
    user32.dll
    C# 根据IP地址获取城市
    WPF 动态布局Grid
    手机自动化测试:Appium源码分析之跟踪代码分析五
    手机自动化测试:appium源码分析之bootstrap三
    手机自动化测试:appium源码分析之bootstrap二
    手机自动化测试:appium源码分析之bootstrap一
  • 原文地址:https://www.cnblogs.com/shuimohei/p/10369920.html
Copyright © 2011-2022 走看看