原创 linux問題記錄:源碼安裝python遇到make: *** [libinstall] Error 1錯誤

我用的是ubuntu 14.04,上面的python版本是2.7.6,有點老,所以就去升級一下。而ubuntu 14.04源裏面自帶的最新版本的python就是2.7.6,所以就想着去源碼安裝一下。可以在編譯到最後一步的時候,遇到了下面的

原创 安裝獨立的python虛擬環境virtualenv

就拿scrapy來說吧,scrapy可以完美的運行在python2環境下,而在python3中相對不是那麼的給力,這主要是因爲twisted的原因。而我們有些程序有需要在python3下面運行,比如基於tornado或asyncio的co

原创 python實現stack(棧)和隊列(queue)

棧和隊列是兩種基本的數據結構,同爲容器類型。兩者根本的區別在於: stack:後進先出 棧示意圖 queue:先進先出 隊列示意圖 注意,stack和queue是沒有查詢具體某一個位置的元素的操作的。但是他們的排列是按順序

原创 scrapy-redis(五):scrapy中信號工作的原理

scrapy有內置的信號,比如spider_opened,spider_closed,item_dropped等等。我們可以利用這些信號來做一些初始化的工作和數據收集統計。比如spider_opened信號就方便了我們在爬蟲啓動的時候,創

原创 scrapy-redis介紹(三):如何自定義user-agent

一般情況下,我們在編寫爬蟲的時候都會不停的更換用戶代理,這樣就可以降低被ban掉的風險。在scrapy中,默認會給我們一個user-agent,這明顯是不可以直接拿來用的,所以,我們需要修改這一部分,以便每個request對象在交給下載器

原创 linux問題記錄:too many levels of symbolic links

今天在ubuntu上reload apache的時候遇到了下面的問題: 引起這個問題的原因就是,我在apache的/etc/apache2/sites-enabled這個目錄建立軟連接的時候,採用了相對路徑,就引發了這個問題。解決方法

原创 tornado學習筆記(三):子類需要重寫的RequestHandler的方法

問題 tornado.web.RequestHandler中哪些方法有必要在子類中重寫? 解決方案 參考tornado的源碼,可以得到我們需要在子類中重寫的方法 示例 下面列出RequestHandler中需要重寫的方法 Req

原创 tornado學習筆記(二):如何在tornado中以異步的方式調用同步函數

問題 如何在tornado的coroutine中調用同步阻塞的函數 解決方案 使用python內置標準庫的concurrent.futures.ThreadPoolExecutor和tornado.concurrent

原创 python爬蟲(四)

在寫爬蟲程序的時候,我們希望能夠併發的抓取,而不是一次只抓取一個url。對於高併發的抓取,目前有三種方案:多進程,多線程,協程(python3.x)。論性能來說,協程最佳(異步執行),tornado就是採用了協程。另外,tornado的文

原创 python網絡爬蟲(二)

在第一篇中,我們介紹瞭如何進行發起一個http請求,並接受響應。在這一部分中,我們介紹一下如何解析網頁並提取我們需要的數據。 我們採用requests這個庫進行一個網頁請求。 r = requests.get('https://www.e