一、在導入一個包的時候,Python 會根據目錄只有包含一個叫作 __init__.py 的文件纔會被認做是一個包,放一個空的 :file:__init__.py就能夠了。html
二、類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱, 按照慣例它的名稱是 self,self表明的實例,self.__class__指向類。python
三、類中以"__"開頭定義的變量爲私有變量;mysql
四、pip升級:linux: pip2/3 install -U pip windows: python2/3 -m pip install -U piplinux
五、xpath路徑表達式:git
六、json:對json模塊的方法的註釋:dump和dumps(從Python生成JSON),load和loads(解析JSON成Python的數據類型);dump和dumps的惟一區別是dump會生成一個類文件對象,dumps會生成字符串,同理load和loads分別解析類文件對象和字符串格式的JSON。github
七、python調試默認爲warnning級別,只有大於該級別的才生效,日誌級別大小關係爲:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,固然也能夠本身定義日誌級別。使用教程
redis
八、python鏈接mysql,ip地址填寫"127.0.0.1",而不是"localhost",不然可能報錯。sql
九、元組中只包含一個元素時,須要在元素後面添加逗號,eg:y = (1,)chrome
十、數據結構的符號:[] - 列表、(a,a,a)或 a,a,a - 元組 、{無鍵值對}或set() - 集合、{}或者{鍵值對} - 字典;json
十一、集合是一個無序不重複元素的集。基本功能包括關係測試和消除重複元素。
安裝:
一、python3安裝的時候,須要以下依賴:
yum install openssl-devel -y yum install zlib-devel -y
二、python3在安裝make的時候,會提示:The necessary bits to build these optional modules were not found ,而後提示一些模塊沒有找到,解決方法 解決方法2。
yum install bzip2-devel ncurses bsddb gdbm-devel sqlite-devel readline-devel
爬蟲:
1、python 自帶的urlib2和urlib或者第三方模塊requests
這種方案適合簡單的頁面爬蟲,好比爬取博客園推薦文章。
urllib2和urllib是python自帶模塊可用來發送處理請求,雖然比較靈活但API易用性較差,因此通常都要進行二次封裝,我曾經也進行過封裝,最後發現本身封裝出來的模塊無限趨近於很是成熟的requests庫,因此仍是直接使用requests吧,固然requests只發送和接受請求,對於頁面分析還要配合lxml或beautifulsoup等第三方庫進行。高級點的爬蟲不只僅是發送和處理請求,還須要處理異常,請求速度控制等問題,這就須要咱們寫額外的代碼去控制,固然咱們能夠本身寫只是時間問題,但徹底沒有必要,接下來我會介紹第二種方案。
若是本身寫的話,能夠用自帶的urllib2,也能夠用requests,解析可使用lxml,BeautifulSoup,實現動態解析,還有splinter等框架,還能夠用threading模塊實現多線程,或者使用協程框架gevent。
2、scrapy框架
scrapy是爬蟲領取的佼佼者,目前我作的項目不管複雜與否,都採用scrapy進行,對於請求調度,異常處理都已經封裝好了,並且有第三方的scrapy-redis還能夠支持分佈式,咱們把關注點放在更重要的頁面分析和規則編寫上,代碼能夠參考我github上的例子。
scrapy抓取虎嗅網文章: https://github.com/world1234567/scrapy_for_huxiu
3、python selenium
這種方式我稱爲終極必殺器,通常是實在沒辦法的時候才用,之前我在利用某家搜索引擎抓取文章時,該搜索引擎採用的比較高難度的反爬蟲機制並且不斷變化讓人找不到規律,最典型的特色就是cookie會隨機隱藏到某個頁面js和圖片中,解決方案就是模擬瀏覽器的行爲加載全部js等靜態資源文件,若是本身寫個瀏覽器取解析太扯蛋了,若是chrome瀏覽器能開放接口,經過chrome的加載方式獲取頁面的內容就行了,這就是selenium了,selenium加上隨機等待時間能夠模擬出和人很是相似的操做行爲,缺點就是速度較慢,可是通常爬蟲對抓取速度要求不高,重要的是穩定性,這種方式對於抓取反爬蟲機制作的好的大型網站比較適用。
總結,對於大部分爬蟲需求直接用scrapy解決,若是解決不了再採用第一種或第三種方案,就這麼簡單。