摘要:1. 果壳 电话面试: 2. 头条 一面: 二面: 3. 创业公司 一面 二面: 4. 出门问问 一面: 二面: 三面: 5. 脉脉 一面
阅读全文
摘要:知识预览 分页器(paginator) COOKIE 与 SESSION Django的用户认证 FORM 知识预览 分页器(paginator) COOKIE 与 SESSION Django的用户认证 FORM 回到顶部 分页器(paginator) 分页器的使用 1 2 3 4 5 6 7 8
阅读全文
摘要:知识预览 Ajax前戏:json Ajax简介 jquery实现的ajax JS实现的ajax 知识预览 Ajax前戏:json Ajax简介 jquery实现的ajax JS实现的ajax 回到顶部 Ajax前戏:json 什么是json? 定义: 讲json对象,不得不提到JS对象: 合格的js
阅读全文
摘要:知识预览 Django基本命令 二 路由配置系统(URLconf) 三 编写视图 四 Template 五 数据库与ORM admin的配置 知识预览 Django基本命令 二 路由配置系统(URLconf) 三 编写视图 四 Template 五 数据库与ORM admin的配置 一 什么是web
阅读全文
摘要:1.对于python3中对话框的使用: 注意python3中相对于python2有很多的变化,其中一些包的名字是改变了,比图Tkinter变为 tkinter,而对于对话框在python2中可以通过导入tkMessageBox来使用,比如:tkMessageBox.showifo("messageb
阅读全文
摘要:matplotlib的学习和使用 matplotlib的安装 简单的折线图 绘制简单的散点图 绘制随机漫步图 random_walk.py rw_visual.py Pygal的学习和使用 安装Pygal 绘制简单的直方图 创建骰子类 die.py 掷骰子die_visual.py 使用Web AP
阅读全文
摘要:【题目:001】| 说说你对zen of python的理解,你有什么办法看到它? Python之禅,Python秉承一种独特的简洁和可读行高的语法,以及高度一致的编程模式,符合“大脑思维习惯”,使Python易于学习、理解和记忆。Python同时采用了一条极简主义的设计理念,了解完整的Python
阅读全文
摘要:1 Python的函数参数传递 看两个例子: Python 1 2 3 4 5 a = 1 def fun(a): a = 2 fun(a) print a # 1 Python 1 2 3 4 5 a = [] def fun(a): a.append(1) fun(a) print a # [1
阅读全文
摘要:Redis通常被认为是一种持久化的存储器关键字-值型存储,可以用于几台机子之间的数据共享平台。 连接数据库 注意:假设现有几台在同一局域网内的机器分别为Master和几个Slaver Master连接时host为localhost即本机的ip Slaver连接时的host也为Master的ip,端口
阅读全文
摘要:用python的正则表达式实现简单的计算器功能 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
阅读全文
摘要:Python3之urllib模块 简介 urllib是python的一个获取url(Uniform Resource Locators,统一资源定位符),可以用来抓取远程的数据。 常用方法 (1)urlopen urllib.request.urlopen(url, data=None,[timeo
阅读全文
摘要:Python3之collections模块 简介 collections是Python内建的一个集合模块,提供了许多有用的集合类。 namedtuple namedtuple 是一个函数,它用来创建一个自定义的元组对象,并且规定了元组元素的个数,并可以用属性而不是索引来引用元组的某个元素。可以通过
阅读全文
摘要:Python3之 contextlib Python中当我们们打开文本时,通常会是用with语句,with语句允许我们非常方便的使用资源,而不必担心资源没有关闭。 1 2 with open('/path/filename', 'r') as f: f.read() 然而,并不是只有open()函数
阅读全文
摘要:Python3之sqlalchemy SqlAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简而言之:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。 ORM(对象关系映射)方法论基于三个核心原则: 简单:以最基本
阅读全文
摘要:Python3之RabbitMQ 简介 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应
阅读全文
摘要:Python3之redis使用 简介 redis是一个key-value存储系统,和Memcache类似,它支持存储的value类型相对更多,包括string(字符串),list(链表),set(集合),zset(有序集合),hash(哈希类型)。这些数据类型都支持push/pop,add/remo
阅读全文
摘要:Python3之Memcache使用 简介 Memcached是一个高性能的分布式内存对象缓存系统,用于动态WEB应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态,数据库网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon
阅读全文
摘要:python自动化开发学习 进程, 线程, 协程 前言 在过去单核CPU也可以执行多任务,操作系统轮流让各个任务交替执行,任务1执行0.01秒,切换任务2,任务2执行0.01秒,在切换到任务3,这样反复执行下去,表面上看每个任务都是交替执行的,但是由于CPU速度太快,让我们觉得所有任务是在同时执行一
阅读全文
摘要:python自动化开发学习 I/O多路复用 一. 简介 socketserver在内部是由I/O多路复用,多线程和多进程,实现了并发通信。IO多路复用的系统消耗很小。 IO多路复用底层就是监听socket对象内部是否有变化,是否在收发消息,Python中select模块提供了select poll
阅读全文
摘要:python算法 1. 冒泡算法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 冒泡算法就是将需要排序的元素看作是一个个“气泡”,最小的“气泡”最先浮出水面,排在最前面。从小到大依次排列。 # 代码如下: li = [97, 65, 13, 39, 88, 50, 30
阅读全文
摘要:Python3之uuid模块 一. 简介 UUID是128位的全局唯一标识符,通常由32字节的字母串表示。它可以保证时间和空间的唯一性,也称为GUID。 全称为:UUID--Universally Unique IDentifier 在python 中叫做UUID,在C#中称为 GUID--Glob
阅读全文
摘要:Python3之PrettyTable模块 一. 简介 Python通过prettytable模块将输出内容如表格方式整齐输出,python本身并不内置,需要独立安装该第三方库。 二. 安装 方式一:pip安装 1 >>> pip install PrettyTable 方式二:源码安装 1 2 3
阅读全文
摘要:python设计模式 一. 单例模式 单例模式(singleton pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同事确保只有单个对象被创建、这个类提供了一种访问其唯一的对象的方式,可以直
阅读全文
摘要:python反射解析 一. 简介 python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。 二. 使用 1 2 3 4 5 6 7 8 9 10 11 12
阅读全文
摘要:Python3异常处理 一. 简介 在编程过程中为了增加友好性,在程序出现Bug时一般不会直接将错误信息展示给用户,而是提供一个友好的输出提示。 二. 使用 1. 异常基础 常用结构: 1 2 3 4 try: pass except Exception,ex: pass 其他结构: 1 2 3 4
阅读全文
摘要:Python3之requests模块 Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。 发送GET请求 1 2 3 4 import urllib.requ
阅读全文
摘要:Python3之时间模块time & datetime & calendar 一. 简介 python 提供很多方式处理日期与时间,转换日期格式是一个常见的功能。 时间元组:很多python函数用一个元组装起来的9组数字处理时间。 python中时间日期格式化符号: 1 2 3 4 5 6 7 8
阅读全文
摘要:Python3之paramiko模块 一. 简介 paramiko是一个基于SSH用于连接远程服务器并执行相关操作(SSHClient和SFTPClinet,即一个是远程连接,一个是上传下载服务),使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理
阅读全文
摘要:Python3之shutil模块 一. 简介 shutil 是高级的文件,文件夹,压缩包处理模块。 二. 使用 shutil.copyfileobj(fsrc, fdst[, length])将文件内容拷贝到另一个文件中 1 2 3 import shutil shutil.copyfileobj(
阅读全文
摘要:Python3之random模块 一.简介 ramdom模块提供了一个随机数的函数:random() 它可以返回一个随机生成的实数,范围在[0,1)范围内。需要注意的是random()是不能直接访问的,需要导入模块random才可以使用。 二. 使用 1 2 3 4 5 6 7 8 9 10 11
阅读全文
摘要:Python3之subprocess模块 一.简介 subprocess最早在2.4版本引入。用来生成子进程,并可以通过管道连接他们的输入/输出/错误,以及获得他们的返回值。 1 2 3 4 5 6 7 # subprocess用来替换多个旧模块和函数 os.system os.spawn* os.
阅读全文
摘要:Python3之sys模块 一.简介 sys模块用于提供对python解释器的相关操作。 二.常用函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
阅读全文
摘要:Python3之os模块 一:简介 os模块主要用于提供系统高级别的操作。 二:常用方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
阅读全文
摘要:Python3之XML模块 一.简介 xml是实现不同语言或程序之间进行数据交换的协议,可扩展标记语言,标准通用标记语言的子集。是一种用于标记电子文件使其具有结构性的标记语言。xml格式如下,是通过<>节点来区别数据结构的。 XML文件示例: 1 2 3 4 5 6 7 8 9 10 11 12 1
阅读全文
摘要:Python3之configparser模块 1. 简介 configparser用于配置文件解析,可以解析特定格式的配置文件,多数此类配置文件名格式为XXX.ini,例如mysql的配置文件。在python3.X中 模块名为configparser ,在python2.X中使用的模块名为Confi
阅读全文
摘要:Python3之hashlib 简介: 用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法。在python3中已经废弃了md5和sha模块,简单说明下md5和sha的使用。 什么是摘要算法呢? 摘要算法又称为哈希算法
阅读全文
摘要:Python3之pickle模块 用于序列化的两个模块 json:用于字符串和Python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 json提供四个功能:dumps,dump,loads,load pickle提供四个功能:dumps,dump
阅读全文
摘要:Python3之json模块 概念: 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON,XML等。反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。 JSON(Java Script Object
阅读全文
摘要:Python3之redis使用 简介 redis是一个key-value存储系统,和Memcache类似,它支持存储的value类型相对更多,包括string(字符串),list(链表),set(集合),zset(有序集合),hash(哈希类型)。这些数据类型都支持push/pop,add/remo
阅读全文
摘要:下面列举了Python3的所有符号用法,别背,千万别背,用到时来查就行。 字符含义 . 表示匹配除了换行符外的任何字符注:通过设置 re.DOTALL 标志可以使 . 匹配任何字符(包含换行符) | A | B,表示匹配正则表达式 A 或者 B ^ 1.(脱字符)匹配输入字符串的开始位置2.如果设置
阅读全文
摘要:正则表达式(简称RE)本质上可以看作一个小的、高度专业化的编程语言,在Python中可以通过re模块使用它。使用正则表达式,你需要为想要匹配的字符串集合指定一套规则,字符串集合可以包含英文句子、e-mail地址、TeX命令或者其它任何你希望的字符串。然后您能提这样的问题:“这个字符串匹配这个模式吗?
阅读全文
摘要:#!/usr/bin/python3 import pymysql import types db=pymysql.connect("localhost","root","123456","python"); cursor=db.cursor() #创建user表 cursor.execute("drop table if exists user")...
阅读全文
摘要:#导入pymysql模块 import pymysql class MYSQL: # 初始化函数,初始化连接列表 def __init__(self,host,user,pwd,dbname): self.host = host self.user = user self.pw...
阅读全文
摘要:先建立一个数据库,名字叫xsk 如果是正常的python建立数据库的话是没有 ENGINE=InnoDB DEFAULT CHARSET=utf8 这一句的, 所以让它支持中文插入的关键就是这一句,原来mysql 默认的是 CHARSET=latin1 ,把它改成utf8就行了
阅读全文
摘要:全局配置settings.py send_mail() 每次发邮件都会建立一个连接,发多封邮件时建立多个连接 send_mass_mail() 是建立单个连接发送多封邮件,所以一次性发送多封邮件时 send_mass_mail 要优于 send_mail。 如果我们想在邮件中添加附件,发送 html
阅读全文
摘要:用Python来生成二维码,需要qrcode模块,qrcode模块依赖Image 模块,所以首先安装这两个模块 生成二维码保存图片在本地 Python中调用: Django 中使用 html 路由映射 逻辑处理
阅读全文
摘要:1、自定义上传【推荐】 请求对象.FILES.get()获取上传文件的对象上传对象.name获取上传文件名称上传对象.chunks()获取上传数据包,字节码类型 html 逻辑处理 内置方式 表单验证模块 数据库操作Models模块 逻辑处理模块
阅读全文
摘要:Django中提供了“信号调度”,用于在框架执行操作时解耦。通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者。 也就是当程序有指定动作时,触发一个信号函数 1、Django内置信号 信号的使用 首先在app项目的__init__.py 这个文件,设置信号行为,因为这个文件是所有
阅读全文
摘要:由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5分钟内再有人来访问时,则不再去执行view中的操作,而是直接从内存或者Redis中之前缓存的内容拿到
阅读全文
摘要:django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。 在django项目的settings模块中,有一个 MIDDLEWARE变量,其中每一个元素就是一个中间件(也就是一个中间件
阅读全文
摘要:全局CSRF 如果要启用防止CSRF跨站请求伪造,就需要在中间件开启CSRF 注意:一旦开启了csrf提交表单时会出现403错误,必须结合两个步骤来使用 第一、页面响应返回必须由render()方法 第二、必须在html页面的<form>标签里用上模板语言{% csrf_token %} <form
阅读全文
摘要:Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 1、数据库(默认)2、缓存3、文件4、缓存+数据库5、加密cookie 1、数据库Session,保存在数据库 Django默认支持Session,并且默认是将Session数据存储在数据库中,即:django
阅读全文
摘要:注意:获取Cookie是在请求对象里处理,设置Cookie是在响应对象里处理 普通Cookieset_cookie()设置普通cookie 参数: key, 键 value='', 值 max_age=None, 超时时间,秒,也支持时间戳 expires=None, 超时时间(IE require
阅读全文
摘要:表单提交 html 路由映射 逻辑处理 method属性获取用户请求方式,post或者get使用方式:请求对象.method POST获取用户post请求方式的信息使用方式:请求对象.POST POST.get()获取用户POST请求方式的表单name名称对应的值,参数是表单name名 表单提交验证
阅读全文
摘要:模板语言就是可以将动态数据在html模板渲染的语言 一、接收值渲染 locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到html用模板语言渲染 {{...}}接收一个变量或者值进行渲染 逻辑处理 html 二、接收值,运行代码块 for循环 {% for item
阅读全文
摘要:F()可以将数据库里的数字类型的数据,转换为可以数字类型 首先要导入 from django.db.models import F Q()运算符:|或者、&并且 实列: 执行原生SQL queryset对象序列化 django的json类型模块serialize() list()将queryset对
阅读全文
摘要:链表操作 链表,就是一张表的外键字段,连接另外一张表的主键字段 一对多 models.ForeignKey()外键字段一对多,值是要外键的表类 正向查找,也就是通过表的外键,查找到外键连接的表里的数据 链表查询之了不起的__双下划线 也就是一般普通查询外键字段时,得到的是另外一张表的主键值, __双
阅读全文
摘要:Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法,写入数据 第二种方式:表类名称.objects.create(字段=值) 第三种方式【推荐】 查询数
阅读全文
摘要:Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置 数据库配置 django默认支持sqlite,mysql, oracle,postgresql数据库。 1,django默认使用sqlite的数据库,默认自带
阅读全文
摘要:Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性 Views(视图函数)逻辑处理,最终是围绕着两个对象实现的 http请求中产生两个核心对象: http请求:HttpRequest对象 http响应:HttpResponse对象 所在位置:django.http 之前我
阅读全文
摘要:Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器 这一节主讲url控制器 一、urls.py模块 这个模块是配置路由映射的模块,当用户访问一个url地址时,通过这个路由映射模块,映射给对应的逻辑处理函数 urlpatterns等于的一个列表,
阅读全文
摘要:Django框架介绍 Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。 这套框架是
阅读全文
摘要:scrapyd模块是专门用于部署scrapy项目的,可以部署和管理scrapy项目 下载地址:https://github.com/scrapy/scrapyd 建议安装 首先安装scrapyd模块,安装后在Python的安装目录下的Scripts文件夹里会生成scrapyd.exe启动文件,如果这
阅读全文
摘要:第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门 我的搜素简单实现原理我们可以用js来实现,首先用js获取到输入的搜索词设置一个数组里存放搜素词,判断搜索词在数组里是否存在如果存在删除原来的词,重新将新词放在
阅读全文
摘要:逻辑处理函数 计算搜索耗时 在开始搜索前:start_time = datetime.now()获取当前时间 在搜索结束后:end_time = datetime.now()获取当前时间 last_time = (end_time-start_time).total_seconds()结束时间减去开
阅读全文
摘要:Django实现搜索功能 1、在Django配置搜索结果页的路由映射 2、编写逻辑处理函数 在逻辑处理函数里实现搜索数据 (1)获取到用户的搜索词 (2)利用原生的elasticsearch(搜索引擎)接口,实现搜索,注明:elasticsearch-dsl就是在原生的elasticsearch上做
阅读全文
摘要:elasticsearch(搜索引擎)提供了自动补全接口 官方说明:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html 1、创建搜索自动补全字段sugges
阅读全文
摘要:前面我们讲到的elasticsearch(搜索引擎)操作,如:增、删、改、查等操作都是用的elasticsearch的语言命令,就像sql命令一样,当然elasticsearch官方也提供了一个python操作elasticsearch(搜索引擎)的接口包,就像sqlalchemy操作数据库一样的O
阅读全文
摘要:bool查询说明 filter:[],字段的过滤,不参与打分must:[],如果有多个查询,都必须满足【并且】should:[],如果有多个查询,满足一个或者多个都匹配【或者】must_not:[],相反查询词一个都不满足的就匹配【取反,非】 建立测试数据 bool组合查询——最简单的filter过
阅读全文
摘要:1、elasticsearch(搜索引擎)的查询 elasticsearch是功能非常强大的搜索引擎,使用它的目的就是为了快速的查询到需要的数据 查询分类: 基本查询:使用elasticsearch内置的查询条件进行查询 组合查询:把多个查询条件组合在一起进行复合查询 过滤:查询同时,通过filte
阅读全文
摘要:1、映射(mapping)介绍 映射:创建索引的时候,可以预先定义字段的类型以及相关属性elasticsearch会根据json源数据的基础类型猜测你想要的字段映射,将输入的数据转换成可搜索的索引项,mapping就是我们自己定义的字段数据类型,同时告诉elasticsearch如何索引数据以及是否
阅读全文
摘要:注意:前面讲到的各种操作都是一次http请求操作一条数据,如果想要操作多条数据就会产生多次请求,所以就有了mget和bulk批量操作,mget和bulk批量操作是一次请求可以操作多条数据 1、mget批量操作(查询) 批量操作(同一个索引同一个表里的批量查询) 说明: 代码: 批量操作(同一个索引同
阅读全文
摘要:elasticsearch(搜索引擎)基本的索引和文档CRUD操作 也就是基本的索引和文档、增、删、改、查、操作 注意:以下操作都是在kibana里操作的 elasticsearch(搜索引擎)都是基于http方法来操作的 GET 请求指定的页面信息,并且返回实体主体 POST 向指定资源提交数据进
阅读全文
摘要:倒排索引 倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(invert
阅读全文
摘要:elasticsearch的基本概念 1、集群:一个或者多个节点组织在一起 2、节点:一个节点是集群中的一个服务器,由一个名字来标识,默认是一个随机的漫微角色的名字 3、分片:将索引(相当于数据库)划分为多份的能力,允许水平分割和扩展,对个分片响应请求,提供性能和吞吐量 3、副本:创建分片的一份或者
阅读全文
摘要:elasticsearch(搜索引擎)介绍 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二最流行的企业搜索引擎。
阅读全文
摘要:Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中,判断URL是否重复 布隆过滤器(Bloom Filter)详解 基本概念 如果想判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数
阅读全文
摘要:scrapy-redis是一个可以scrapy结合redis搭建分布式爬虫的开源模块 scrapy-redis的依赖 Python 2.7, 3.4 or 3.5,Python支持版本 Redis >= 2.8,Redis版本 Scrapy >= 1.1,Scrapy版本 redis-py >= 2
阅读全文
摘要:1、分布式爬虫原理 2、分布式爬虫优点 3、分布式爬虫需要解决的问题
阅读全文
摘要:信号一般使用信号分发器dispatcher.connect(),来设置信号,和信号触发函数,当捕获到信号时执行一个函数 dispatcher.connect()信号分发器,第一个参数信号触发函数,第二个参数是触发信号, 以下是各种信号 signals.engine_started当Scrapy引擎启
阅读全文
摘要:Scrapy提供了方便的收集数据的机制。数据以key/value方式存储,值大多是计数值。 该机制叫做数据收集器(Stats Collector),可以通过 Crawler API 的属性 stats 来使用无论数据收集(stats collection)开启或者关闭,数据收集器永远都是可用的。 因
阅读全文
摘要:scrapy的每一个爬虫,暂停时可以记录暂停状态以及爬取了哪些url,重启时可以从暂停状态开始爬取过的URL不在爬取 实现暂停与重启记录状态 1、首先cd进入到scrapy项目里 2、在scrapy项目里创建保存记录信息的文件夹 3、执行命令: scrapy crawl 爬虫名称 -s JOBDIR
阅读全文
摘要:1、chrome谷歌浏览器无界面运行 chrome谷歌浏览器无界面运行,主要运行在Linux系统,windows系统下不支持 chrome谷歌浏览器无界面运行需要一个模块,pyvirtualdisplay模块 需要先安装pyvirtualdisplay模块 Display(visible=0, si
阅读全文
摘要:1、爬虫文件 dispatcher.connect()信号分发器,第一个参数信号触发函数,第二个参数是触发信号,signals.spider_closed是爬虫结束信号 2、middlewares.py中间件文件 3、settings.py配置文件注册中间件
阅读全文
摘要:selenium模块 selenium模块为第三方模块需要安装,selenium模块是一个操作各种浏览器对应软件的api接口模块 selenium模块是一个操作各种浏览器对应软件的api接口模块,所以还得需要下载对应浏览器的操作软件 操作原理是:selenium模块操作浏览器操作软件,浏览器操作软件
阅读全文
摘要:cookie禁用 就是在Scrapy的配置文件settings.py里禁用掉cookie禁用,可以防止被通过cookie禁用识别到是爬虫,注意,只适用于不需要登录的网页,cookie禁用后是无法登录的 settings.py里禁用掉cookie禁用 COOKIES_ENABLED = False 禁
阅读全文
摘要:设置代理ip只需要,自定义一个中间件,重写process_request方法, request.meta['proxy'] = "http://185.82.203.146:1080" 设置代理IP 中间件,注意将中间件注册到配置文件里去 随机数据库获取IP 数据库模块文件
阅读全文
摘要:downloadmiddleware介绍中间件是一个框架,可以连接到请求/响应处理中。这是一种很轻的、低层次的系统,可以改变Scrapy的请求和回应。也就是在Requests请求和Response响应之间的中间件,可以全局的修改Requests请求和Response响应 UserAgentMiddl
阅读全文
摘要:Requests请求 Requests请求就是我们在爬虫文件写的Requests()方法,也就是提交一个请求地址,Requests请求是我们自定义的 Requests()方法提交一个请求 参数: url= 字符串类型url地址 callback= 回调函数名称 method= 字符串类型请求方式,如
阅读全文
摘要:1、基本概念 2、反爬虫的目的 3、爬虫和反爬的对抗过程以及策略 scrapy架构源码分析图
阅读全文
摘要:用命令创建自动爬虫文件 创建爬虫文件是根据scrapy的母版来创建爬虫文件的 scrapy genspider -l 查看scrapy创建爬虫文件可用的母版 Available templates:母版说明 basic 创建基础爬虫文件 crawl 创建自动爬虫文件 csvfeed 创建爬取csv数
阅读全文
摘要:第一步。首先下载,大神者也的倒立文字验证码识别程序 下载地址:https://github.com/muchrooms/zheye 注意:此程序依赖以下模块包 Keras==2.0.1 Pillow==3.4.2 jupyter==1.0.0 matplotlib==1.5.3 numpy==1.1
阅读全文
摘要:注意:数据保存的操作都是在pipelines.py文件里操作的 将数据保存为json文件 spider是一个信号检测 将数据保存到数据库 我们使用一个ORM框架sqlalchemy模块,保存数据 数据库操作文件 pipelines.py文件
阅读全文
摘要:编写spiders爬虫文件循环抓取内容 Request()方法,将指定的url地址添加到下载器下载页面,两个必须参数, 参数: url='url' callback=页面处理函数 使用时需要yield Request() parse.urljoin()方法,是urllib库下的方法,是自动url拼接
阅读全文
摘要:css选择器 1、 2、 3、 ::attr()获取元素属性,css选择器 ::text获取标签文本 举例: extract_first('')获取过滤后的数据,返回字符串,有一个默认参数,也就是如果没有数据默认是什么,一般我们设置为空字符串 extract()获取过滤后的数据,返回字符串列表
阅读全文
摘要:我们自定义一个main.py来作为启动文件 main.py #!/usr/bin/env python # -*- coding:utf8 -*- from scrapy.cmdline import execute #导入执行scrapy命令方法 import sys import os sys.
阅读全文
摘要:网站树形结构 深度优先 是从左到右深度进行爬取的,以深度为准则从左到右的执行(递归方式实现)Scrapy默认是深度优先的 广度优先 是以层级来执行的,(列队方式实现)
阅读全文
摘要:PhantomJS虚拟浏览器 phantomjs 是一个基于js的webkit内核无头浏览器 也就是没有显示界面的浏览器,利用这个软件,可以获取到网址js加载的任何信息,也就是可以获取浏览器异步加载的信息 下载网址:http://phantomjs.org/download.html 下载对应系统版
阅读全文
摘要:在urllib中,我们一样可以使用xpath表达式进行信息提取,此时,你需要首先安装lxml模块,然后将网页数据通过lxml下的etree转化为treedata的形式 urllib库中使用xpath表达式 etree.HTML()将获取到的html字符串,转换成树形结构,也就是xpath表达式可以获
阅读全文
摘要:crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多网站,当你浏览器访问时看到的信息,在html源文件里却找不到,由得信息还是滚动条滚动到对应的位置后才显示信息,那么这种一般都是 js 的 Ajax 动态请求生成的信息 我们以百度新闻为列: 1、分析网站 首先我
阅读全文
摘要:模拟浏览器登录 start_requests()方法,可以返回一个请求给爬虫的起始网站,这个返回的请求相当于start_urls,start_requests()返回的请求会替代start_urls里的请求 Request()get请求,可以设置,url、cookie、回调函数 FormReques
阅读全文
摘要:xpath表达式 //x 表示向下查找n层指定标签,如://div 表示查找所有div标签 /x 表示向下查找一层指定的标签 /@x 表示查找指定属性的值,可以连缀如:@id @src [@属性名称="属性值"]表示查找指定属性等于指定值的标签,可以连缀 ,如查找class名称等于指定名称的标签 /
阅读全文
摘要:Scrapy框架安装 1、首先,终端执行命令升级pip: python -m pip install --upgrade pip2、安装,wheel(建议网络安装) pip install wheel3、安装,lxml(建议下载安装)4、安装,Twisted(建议下载安装)5、安装,Scrapy(建
阅读全文
摘要:封装模块 实战爬取搜狗微信公众号 抓包教程 首先安装Fiddler4 软件界面说明 清除请求 设置抓包浏览器 这样设置好后,这个浏览器访问的网址就会在抓包软件里看到信息了 设置抓取https协议的网站 导出证书到桌面 将证书安装到浏览器 可以看到软件已经获取到https网站了 疑难问题解决: 有些可
阅读全文
摘要:使用IP代理 ProxyHandler()格式化IP,第一个参数,请求目标可能是http或者https,对应设置build_opener()初始化IPinstall_opener()将代理IP设置成全局,当使用urlopen()请求时自动使用代理IP ip代理池构建一 适合IP存活时间长,稳定性好的
阅读全文
摘要:如果爬虫没有异常处理,那么爬行中一旦出现错误,程序将崩溃停止工作,有异常处理即使出现错误也能继续执行下去 1.常见状态吗 301:重定向到新的URL,永久性302:重定向到临时URL,非永久性304:请求的资源未更新400:非法请求401:请求未经授权403:禁止访问404:没找到对应页面500:服
阅读全文
摘要:利用python系统自带的urllib库写简单爬虫 urlopen()获取一个URL的html源码read()读出html源码内容decode("utf-8")将字节转化成字符串 正则获取页面指定内容 urlretrieve()将网络文件下载保存到本地,参数1网络文件URL,参数2保存路径 urlc
阅读全文
摘要:一般抓取过的url不重复抓取,那么就需要记录url,判断当前URL如果在记录里说明已经抓取过了,如果不存在说明没抓取过 记录url可以是缓存,或者数据库,如果保存数据库按照以下方式: id URL加密(建索引以便查询) 原始URL 保存URL表里应该至少有以上3个字段1、URL加密(建索引以便查询)
阅读全文
摘要:标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象需要导入模块:from scrapy.selector import HtmlXPathSelector select()标签选择器方法,是HtmlXPathSelector里的一个方
阅读全文
摘要:Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services )
阅读全文
摘要:当前环境python3.5 ,windows10系统 Linux系统安装 在线安装,会自动安装scrapy模块以及相关依赖模块 手动源码安装,比较麻烦要自己手动安装scrapy模块以及依赖模块 安装以下模块 1、lxml-3.8.0.tar.gz (XML处理库) 2、Twisted-17.5.0.
阅读全文
摘要:requests请求,就是用python的requests模块模拟浏览器请求,返回html源码 模拟浏览器请求有两种,一种是不需要用户登录或者验证的请求,一种是需要用户登录或者验证的请求 一、不需要用户登录或者验证的请求 这种比较简单,直接利用requests模块发一个请求即可拿到html源码 得到
阅读全文