generator(生成器)
- 
什么是生成器:
- 把一个列表推倒式
l = [x for x in range(10)]改成l = (x for x in range(10))就变成了一个生成器。 - 一个函数中只要有
yield那么也是一个生成器。 
 - 把一个列表推倒式
 - 
可迭代对象:
- 一类是集合数据类型,如list、tuple、dict、set、str等;(字典遍历,打印出键)
 - 一类是
generator,包括生成器和带yield的generator function。 
 
生成器和迭代器的区别:
可以理解为可以被next()函数调用并不断返回下一个值的对象称为迭代器,生成器一定是一个迭代器;生成器只是一个保存的一个算法。
beautifulsoup4常用方法
语法:soup = BeautifulSoup(html,"lxml")
- 
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')
 
 - 
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']")
 
 - 
获取内容用
get_text(),获取属性值get("value ") 
创建多线程的方式
- 
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() - 
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() - 
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) - 
tesseract库的使用安装好以后,在终端输入:
$ tesseract XXX.jpg text # 就会在该路径下生成一个text.txt文件 - 
subprocess的用法这个模块可以实现在代码中输入执行终端的命令。
import subprocess subprocess.call(["ls","l"]) # 逗号就相当于终端中输入空格 - 
通过
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'] - 
字典的
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 











网友评论