美文网首页
查漏补缺

查漏补缺

作者: 那年的茶馆 | 来源:发表于2017-11-03 11:19 被阅读0次

    generator(生成器)

    1. 什么是生成器:

      • 把一个列表推倒式l = [x for x in range(10)]改成l = (x for x in range(10))就变成了一个生成器。
      • 一个函数中只要有yield那么也是一个生成器。
    2. 可迭代对象:

      • 一类是集合数据类型,如list、tuple、dict、set、str等;(字典遍历,打印出键)
      • 一类是generator,包括生成器和带yieldgenerator function

    生成器和迭代器的区别:
    可以理解为可以被next()函数调用并不断返回下一个值的对象称为迭代器,生成器一定是一个迭代器;生成器只是一个保存的一个算法。

    beautifulsoup4常用方法

    语法:soup = BeautifulSoup(html,"lxml")

    1. find_all:返回所有元素的列表,bs4语法

      • soup.find_all("a")
      • soup.find_all(["a","b"])
      • soup.find_all(id="abc")
      • soup.find_all("input", attrs={"name":"_xsrf"})
      • soup.find_all('div', class__='t')
    2. select:返回所有元素的列表,完全是CSS语法

      • soup.select("div")
      • soup.select(".nav")
      • soup.select("#nav")
      • soup.select("p #nav")
      • soup.select(".abc, .def")
      • soup.select("div[class='nav']")
      • soup.select("a[href='http://www.baidu.com']")
    3. 获取内容用get_text(),获取属性值get("value ")

    创建多线程的方式

    1. threading模块

      import threading
          
      
      def func():
          print "hello world"
      l = []  
      for i in range(5):
          thread = threading.Thread(target=func, args=[])
          thread.start()
          l.append(thread)
      for thread in l:
          thread.join()
      
    2. multiprocessing.dumpy模块

      from multiprocessing.dumpy import Pool
      
      def func(a):
          print a
      pool = Pool(5)
      pool.map(func, [1,2,3,4,5]) -----> 它的结果是一个列表
      pool.close()
      pool.join()
      
    3. gevent版本

      import gevent
      from gevent import monkey
      mankey.patch_all()
      # 使用列表推导式将每个协程放到列表内
      job_list = [gevent.spawn(func, args) for i in range(5)]
      gevent.joinall(job_list)
      
    4. tesseract库的使用

      安装好以后,在终端输入:

      $ tesseract XXX.jpg text # 就会在该路径下生成一个text.txt文件
      
    5. subprocess的用法

      这个模块可以实现在代码中输入执行终端的命令。

      import subprocess
      subprocess.call(["ls","l"])  # 逗号就相当于终端中输入空格
      
    6. 通过meta传参数

      def parse(self, response):
          yield scrapy.Request(url, callback=self.func, meta={"haha":item})
      
      def parse_item(self, response)
          # 取出传递过来的meta
          item = response.meta['haha']
      
    7. 字典的get()方法

      In [1]: dict = {'name':'johnny','age':'27'}
      In [2]: print(dict.get('name'))
      johnny
      In [3]: dict.get('sex')
      In [4]: print(dict.get('sex'))
      None
      

    相关文章

      网友评论

          本文标题:查漏补缺

          本文链接:https://www.haomeiwen.com/subject/uqftmxtx.html