generator(生成器)
-
什么是生成器:
- 把一個列表推倒式
l = [x for x in range(10)]
改成l = (x for x in range(10))
就變成了一個生成器疮茄。 - 一個函數(shù)中只要有
yield
那么也是一個生成器。
- 把一個列表推倒式
-
可迭代對象:
- 一類是集合數(shù)據(jù)類型动雹,如list彩掐、tuple聚谁、dict、set垂券、str等苇羡;(字典遍歷定拟,打印出鍵)
- 一類是
generator
,包括生成器和帶yield
的generator function
暂衡。
生成器和迭代器的區(qū)別:
可以理解為可以被next()函數(shù)調(diào)用并不斷返回下一個值的對象稱為迭代器,生成器一定是一個迭代器崖瞭;生成器只是一個保存的一個算法狂巢。
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']")
獲取內(nèi)容用
get_text()
,獲取屬性值get("value ")
創(chuàng)建多線程的方式
-
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]) -----> 它的結(jié)果是一個列表 pool.close() pool.join()
-
gevent
版本import gevent from gevent import monkey mankey.patch_all() # 使用列表推導(dǎo)式將每個協(xié)程放到列表內(nèi) job_list = [gevent.spawn(func, args) for i in range(5)] gevent.joinall(job_list)
-
tesseract
庫的使用安裝好以后唧领,在終端輸入:
$ tesseract XXX.jpg text # 就會在該路徑下生成一個text.txt文件
-
subprocess
的用法這個模塊可以實現(xiàn)在代碼中輸入執(zhí)行終端的命令藻雌。
import subprocess subprocess.call(["ls","l"]) # 逗號就相當(dāng)于終端中輸入空格
-
通過
meta
傳參數(shù)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