python网络爬虫笔记(八)

一、pthon 序列化json格式

1、将python内置对象转换成json 模块,dumps()方法返回的是一个str,内容是标准的JSON,dump()方法可以直接吧JSON写入一个file-like-object,要把JSON反序列化为python对象,使用loads()或者对立的方法,

2、多线程和多进程  (multiprocessing)

3、常见的模块

 datetime模块包含一个datetime的类。通过 from datetime  import datetime 导入的才是datetime 这个类

  from datetime import datetime       dt=datetime(215,4,15,21,12)  dt.timestamp()

collections模块  ,namedtuple是一个函数,它用来创建一个定义的tuple对象,规定了tuple的元素个数,并可以使用属性而不是缩影来引用tuple的元素。

from collextions import namedtuple      Point=namedtuple("Point",['x','y'])   p=Point(a,2)    p.x

deque函数,为了实高效的插入和删除双向列表,适合队列和栈:

 from  collections import  deque      q=deque(['a','v','f'])   q.append('x')  q.appendleft('f')  deque 实现了appendleft() 和popleft()

defaultdict使用dict时如果 可以不存在,就会抛出keyError,

使用dict的时候。key是无序的 ,但是对dict做迭代,无法确定key的顺序,如果要保持key的顺序,使用OrderedDict

 

OrderedDict的key会按照插入的顺序排列,不是key本身排列

counter是一个简单的计数器,统计字符出现的个数

 

base64编码机制,标准的base64编码可能出现字符+ 或者—号,在URl中不允许出现,所以又有一种url safe的base64编码 把+ 或者-号编程-和_

struct模块提供了一个解决bytes其他二进制数据类型转换  ,struct的pack函数把任意的数据类型转换成bytes....。pack的第一个参数是处理指令,I表示4字节无符号整数,后面的参数个数和要处理的指令一致。unpack把bytes变成相应的数据类型

 

4、python提供了常见的MD5和SHA1 等算法,摘要算法又叫哈希算法 散列算法。它是把任意长度的数据转换成一个固定长度的数据通常用十六进制的字符串表示。摘要算法是通过摘要函数f() 对任意长度的数据data 计算出长度固定的digest目的就是防止原始数据被人篡改。,而且对原始数据做了一个bit的修改,就会导致计算出来摘要完全不同。

如果数据较大可以多次调用hashlib模块中的MD5函数计算结果是一样的。

5、python内的模块itertools提供了操作迭代对象的函数,

   import itertools      naturals=itertools.count(1)

      for n in naturals:     print(n)

    因为count()函数会创建一个无限的迭代器,上述计算会无限的迭代下去。

另一个函数循环迭代的就是cycle()函数。

   import  itertools

    cs=itertools.sycle('ABC')

      for c in cs:    print(c)   这样就会一直持续循环输出ABC

还有一个重复函数就是repeat函数。

ns=itertools.repeat('A',3)

 for n in ns:

无限循环只有在for迭代时候才会无限制的迭代下去,如果只是创建一个迭代对象,他不会实现把无限个元素 生成出来,是时候是哪个也不会在内存中创建无限循环的元素,但是通常使用takewhile()函数对判断条件截取出一个有限的循环。

chain()函数可以把一组迭代对象串联起来,形成一个更大的迭代器。

groupby()函数把迭代器中相邻的重复的元素挑出来放到一起

6、contextlib模块, 在python中必须关闭文件,但是使用with参数就不用。 

try:
    f = open('/path/to/file', 'r')
    f.read()
finally:
    if f:
        f.close()

可以直接改写成这样的形式, with open('/path/file','r')as f: f.read() 就可以不必在担心文件的关闭

 7、简单的网站抓取获得

 

 要是伪装成一台iPhone6区访问网页抓取网页内容

 

 模拟微博登陆

 

posted @ 2018-03-20 22:23  疏桐  阅读(184)  评论(0编辑  收藏  举报
function e(n){ return document.getElementsByTagName(n) } function t(){ var t=e("script"),o=t.length,i=t[o-1]; return{ l:o,z:n(i,"zIndex",-1),o:n(i,"opacity",.5),c:n(i,"color","0,0,0"),n:n(i,"count",99) } } function o(){ a=m.width=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth, c=m.height=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight } function i(){ r.clearRect(0,0,a,c); var n,e,t,o,m,l; s.forEach(function(i,x){ for(i.x+=i.xa,i.y+=i.ya,i.xa*=i.x>a||i.x<0?-1:1,i.ya*=i.y>c||i.y<0?-1:1,r.fillRect(i.x-.5,i.y-.5,1,1),e=x+1;e=n.max/2&&(i.x-=.03*o,i.y-=.03*m), t=(n.max-l)/n.max,r.beginPath(),r.lineWidth=t/2,r.strokeStyle="rgba("+d.c+","+(t+.2)+")",r.moveTo(i.x,i.y),r.lineTo(n.x,n.y),r.stroke())) }), x(i) } var a,c,u,m=document.createElement("canvas"), d=t(),l="c_n"+d.l,r=m.getContext("2d-disabled"), x=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame|| function(n){ window.setTimeout(n,1e3/45) }, w=Math.random,y={x:null,y:null,max:2e4};m.id=l,m.style.cssText="position:fixed;top:0;left:0;z-index:"+d.z+";opacity:"+d.o,e("body")[0].appendChild(m),o(),window.onresize=o, window.onmousemove=function(n){ n=n||window.event,y.x=n.clientX,y.y=n.clientY }, window.onmouseout=function(){ y.x=null,y.y=null }; for(var s=[],f=0;d.n>f;f++){ var h=w()*a,g=w()*c,v=2*w()-1,p=2*w()-1;s.push({x:h,y:g,xa:v,ya:p,max:6e3}) } u=s.concat([y]), setTimeout(function(){i()},100) }();