#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 以矩阵为基础的数据计算
'''

  

<每日一题>题目21:简单的python练习题(21-30)的更多相关文章

  1. <每日一题>题目16:简单的python练习题(1-10)

    #1.python程序中__name__的作用是什么? __name__这个系统变量用来表示程序的运行方式. 如果程序在当前膜快运行,__name__的名称就是__main__, 如果不在(被调用), ...

  2. <每日一题>题目1:简单的注册和登录1.0

    #版本1.0,最基本的注册登录'''1.注册,将账号和密码分别写在不同的文档里面2.登录,分别从账户文档和密码文档进行读取并登录''' #注册 Identity = input("请输入您想 ...

  3. <每日一题>题目20:简单python练习题(11-20)

    #11.编写程序,输入一个自然数,输出它的二进制.八进制.十六进制表示形式 Num = input("请输入任性自然数:") Num = eval(Num) print(" ...

  4. <每日一题>题目28:简单的python练习题(51-60)

    #51.一行代码实现1-100的和 sum(range(1,101)) #52.如何在一个函数内部修改全局变量 ''' 利用global ''' #53.字典如何删除和合并2个字典 ''' del d ...

  5. <每日一题>题目22:简单的python练习题(31-40)

    #31.分布式爬虫主要解决什么问题? ''' ip 带宽 CPU IO ''' #32.网络传输层 ''' 应用层—http ftp dns nfs 传输层—tcp --udp 网络层—ip icmp ...

  6. <每日一题>题目13:列表的简单问题

    ''' 分析: python赋值是通过指针来进行的. 很显然第一.三.四次调用都指向同一个列表,并未完成清空, 第二次调用只是指向了另一个列表,也未完成清空,很显然结果是累计的 结果: [0, 1] ...

  7. <每日一题>题目12:列表解析及zip、dict函数的简单应用

    ''' 分析: 1.列表解析:迭代机制的一种应用 语法: [expression for iter_val in iterable] [expression for iter_val in itera ...

  8. <每日一题>题目19:简单的程序执行效率面试题

    # 将下面的函数按照执行效率高低排序.它们都接受由0至1之间的数字构成的列表作为输入.这个列表可以很长.一个输入列表的示例如下:[random.random() for i in range(1000 ...

  9. <每日一题>题目7:简单的学生管理系统V1.0

    ''' # 学生管理系统v1.0 # 添加学生的信息 # 删除学生的信息 # 修改学生的信息 # 查看学生的信息 #遍历学生的信息 #退出系统 ''' import json #1 显示操作功能 de ...

随机推荐

  1. JS对象随机数 random() 方法可返回介于 0 ~ 1(大于或等于 0 但小于 1 )之间的一个随机数。 注意:返回一个大于或等于 0但小于1的符号为正的数值

    随机数 random() random() 方法可返回介于 0 ~ 1(大于或等于 0 但小于 1 )之间的一个随机数. 语法: Math.random(); 注意:返回一个大于或等于 0 但小于 1 ...

  2. 同步图计算实现最短路径Dijkstra算法

    同上篇讲述pageRank一样,考虑一个顶点V. 根据顶点算法通常步骤1) 接收上个超步发出的入邻居的消息2) 计算当前顶点的值3) 向出邻居发消息 1.接收入邻居的消息 2.求入邻居的最小值,加上顶 ...

  3. SQL Server 2008 install

    双击sql server 2008的.exe安装文件,进入[SQL Server 安装中心]. 2 点击界面左侧的[安装],然后点击右侧的[全新SQL Server 独立安装或向现有安装添加功能],进 ...

  4. 单调栈——cf777E

    傻逼单调栈啊我怎么想了半天dp #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef st ...

  5. 【转载】Delphi异常处理try except语句和try finally语句用法以及区别

    Delphi异常处理try except语句和try finally语句用法以及区别 一直写程序都没管他们,也尽量很少用,今天终于想把他给弄个明白,在网上找来,记下!主要是前面小部分,后面的是详细说明 ...

  6. 20175323《Java程序设计》第二周学习总结

    一.教材学习内容总结 标识符第一个字符不能是数字且区分大小写数据类型转换时只允许把精度低的给精度高的,否则必须强制转换输入数据语法 Scanner reader = new Scanner(Syste ...

  7. iServer添加Oracle Plus数据源、服务发布的问题

    今天在将以Oracle Plus为数据源的工作空间发布成服务时,发现服务发布完后,看不见任何数据.最后发现,还需要在iserver服务器上安装oracle客户端才行.整理如下: 一.创建空间数据库账户 ...

  8. 国内外自然语言处理(NLP)研究组

     国内外自然语言处理(NLP)研究组 *博客地址 http://blog.csdn.net/wangxinginnlp/article/details/44890553 *排名不分先后.收集不全,欢迎 ...

  9. ASP.NET的底层体系1

    文章引导 1.ASP.NET的底层体系1 2.ASP.NET的底层体系2 引言: 学习ASP.NET,要想做的更好,不了解ASP.NET是不行的.一个有理想的程序员都会像挤压海绵一样,努力的去学习和获 ...

  10. Git log和reflog

    1.log  log命令可以显示所有提交过的版本信息.显示信息如下: Administrator@USER-20171026MG MINGW64 ~/Desktop/lyf (master) $ gi ...