随笔分类 - python
摘要:python中并没有多分支的语句。像c语言中有switch语句,可以避免多个if的使用场合,简化代码。 python若想实现多分支的功能需要自己构建代码,涉及到装饰器的知识点。下面举个例子。 switch_dicts = {} def deco(data): def wrapper(func): i
阅读全文
摘要:斐波那契序列为1,1,2,3,5,8,13.......序列中的下一个数字为之前前两个数字的运算和。 方法1:矩阵思想 [0,1] [a] [b] [1,1] * [b] = [a+b] 方法二: 递归思想,但递归由于较耗时,这里利用缓存将参数n和结果保存到字典a中,速度为0.007s。 方法三:
阅读全文
摘要:在python中,没有指针概念,但采用引用来代替这个概念。当对变量赋值时,相当于值的引用地址(类似于物理地址)存储到变量中。 浅拷贝是指拷贝数据的表层,虽是开辟空间,存储数据,但只是copy表层的数据。若数据是多层嵌套,则第二层的数据只是赋值其引用地址。 深拷贝是深层次拷贝数据,另开空间,将数据复制
阅读全文
摘要:问题1:__dict__魔术属性是什么? python中的元对象object中定义了__dict__属性,其以字典的形式用来承载类中的属性和方法。类的__dict__和类实例对象的__dict__存储的内容不同,类的__dict__存储了类的方法,类变量,静态方法等;实例类的__dict__中存储了自己定义的属性和方法,类变量不在此中存储。例如: class Foo: x=Tes...
阅读全文
摘要:1.数据的索引: 2.数据的去重: 问题1.list去重 1.方法1:利用集合的去重特性。 a=[1,2,1] b=list(set(a)) 缺点:集合是无序的,可能改变数据顺序 b.sort(key=a.index) 2.方法2:利用numpy中的unique()函数可以保持数据的唯一性 a=[1
阅读全文
摘要:类定义后,便在内存中开辟空间存储类属性和所有的方法,其中类属性是以字典的形式进行存储。当实例化一个类时,即另开辟空间存储成员变量,以及定义变量__class__指向类的存储空间。对象中的私有变量也是可以访问的,只是其名字发生改变,obj._class名__varible可以通过对象.__dict__
阅读全文
摘要:1.专有名词: 进程:程序执行的基本单位,一个程序最少占用一个进程。不能共享全局变量,需要使用管道,队列等进行数据传输。 线程:线程依附于进程存在,线程之间可共享全局变量。进程、线程都需要系统来调用资源,因此相互切换较费时,费资源 协程:用户级的线程,用户自己调用资源进行切换。其主要应用于io口密集
阅读全文
摘要:可迭代的对象:python中凡是具有__iter__魔法属性的对象便是可迭代对象。在python中,凡是能够遍历的对象都是可迭代的。一般有list,set, dict,char ,tuple,range。可迭代的对象通过iter函数包装便是迭代器。 迭代器:对象具有__iter__和__next__
阅读全文
摘要:队列,网络队列,管道,socket总结,同步,异步,并行,并发同步:按照顺序逐个运行异步:同时进行,没有执行顺序并发:任务数大于内核数,只能轮流执行并行:任务数小于内核数,可行同时运行任务
阅读全文
摘要:1.函数在内存中的执行机制: 当定义函数def func(a,b):, 相当于定义了一个变量func,其指向在内存中开辟空间保存的形参a、b和定义函数时的逻辑程序,即定义函数,相当于定义了一个新变量。当调用函数时,例如a=func(5,10),相当于将 实参5,10传递给func,开始执行函数,之后
阅读全文
摘要:2.多个装饰器同时装饰一个函数 this is a decorator2this is a decorator11 is using wrapper2 is using wrapperi am a usual function 3.装饰器路由功能:
阅读全文
摘要:python 语言的三大基本点是:数据结构、函数、对象类。基本上所有应用都是围绕这三点进行展开的。 一、数据结构: 1.1 python中变量存储方式: python中变量赋值是将对象的引用地址给变量,其类似于c语言中的指针;而c语言中变量赋值,存储的是对象的值,只有用指针变量指向对象,才是将对象的
阅读全文
摘要:心得: 1.采用selenium由于涉及到加载数据,比较缓慢,容易超时,一定要采用try语句, 2.使用的xpath搜索时,容易找不到所要的路径,需要简洁化,否认则会出现假死机现象 3.采用selenium爬虫,由于涉及到页面加载,十分缓慢,个人倾向于ajax技术。 4.由于豆瓣信息中需要获取的信息是静态的,所以可以直接使用bs4模块进行获取,不必采用selenium #from bs4 im...
阅读全文
摘要:题目:从http://movie.mtime.com中读取一个电影的票房信息和相关的同类电影。 方案一:采用Ajax技术,逐步提取动态网站的json,再进行爬虫 知识点: 1.由于该数据是动态信息,需要找到相关的json,并拼接出所需要的网址,进行爬虫。 2.利用正则表达式提取网址信息、利用json
阅读全文
摘要:由于mongo对可以数据进行分布式存储,mongo数据库有较大的优势。 下面介绍一下其安装方法: 1.从官网https://www.mongodb.com/download-center#community下载软件,格式可以是msi,直接解压进行安装 2.安装过程可以选择dbpath,logpath
阅读全文
摘要:1.采用beautifusoap获取网站信息: 调试结果:获取百度网站的一些关键字:新闻、地图、视频等,并提取源图片的网站。 2.采用xpath获取网站信息: 调试结果: 爬虫实例: 调试结果:由于数据太大,只展示开头的数据。
阅读全文
摘要:正则表达式(regular expression)一般应用于数据的筛选、查找。是比较常用的工具。正则表达式按照其用途可以分为几大类:匹配单个字符、匹配多个字符,匹配字符位置、匹配分组等。 一、正则表达式字符 1.匹配单个字符: [^] 对中括号内的字符取反进行匹配 2. 匹配多个字符: 3.匹配位置
阅读全文
摘要:proxy的应用主要是由于多次爬虫时,可能造成服务器禁止访问等拒绝操作。使用代理,定时的更换ip,可以较好的避免这一现象。 代理的使用也较简单,建立一个代理类即可。本人使用的服务器网址: https://www.xicidaili.com/ 当然爬虫时,我们可以使用多个代理ip轮换爬虫来防止服务器拒
阅读全文
摘要:cookie是web主机服务器返回给客户端登陆信息的一种密钥。在爬虫时,对于需要登陆账号密码的网站,若不使用cookie,则不能获取需要的信息。当使用cookie时,客户端可以多次直接获取服务器网页信息,不必重复登陆自己的账号密码。cookie的使用分为两种,第一种:将cookie放在header信
阅读全文