html
sys.argv[-1]獲取控制檯輸入的url賦值給base_urlpython
經過urlparse.urlparse(sys.argv[-1]).netloc.replace(':', '_')獲取給定url中的服務器地址賦值給domain瀏覽器
建立名爲domain的文件夾服務器
輸出:[+] Download and parse index file ...cookie
經過_request_data()函數獲取目標路徑下的index文件賦值給data網絡
建立index文件,在其中寫入上一步獲取到的dataapp
定義一個FIFO隊列dom
socket
函數
>>> from urlparse import urlparse >>> o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html') >>> o # doctest: +NORMALIZE_WHITESPACE ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='') >>> o.scheme 'http' >>> o.port 80 >>> o.geturl() 'http://www.cwi.nl:80/%7Eguido/Python.html'
該類是URL請求的抽象。
url應該是包含有效URL的字符串。
data能夠是指定要發送到服務器的其餘數據的字符串,若是不須要這樣的數據,則爲None。 目前,HTTP請求是惟一使用數據的請求; 提供數據參數時,HTTP請求將是POST而不是GET。 數據應該是標準application / x-www-form-urlencoded格式的緩衝區。 urllib.urlencode()函數採用2元組的映射或序列,並以此格式返回一個字符串。
headers應該是一個字典,而且將被視爲調用add_header()時每一個鍵和值做爲參數。 這一般用於「欺騙」User-Agent標頭值,瀏覽器使用該標頭值來識別自身 - 某些HTTP服務器僅容許來自常見瀏覽器而非腳本的請求。 例如,Mozilla Firefox可能將本身標識爲「Mozilla / 5.0(X11; U; Linux i686)Gecko / 20071127 Firefox / 2.0.0.11」,而urllib2的默認用戶代理字符串爲「Python-urllib / 2.6」(在Python 2.6上) 。
最後兩個參數僅對正確處理第三方HTTP cookie感興趣:
origin_req_host應該是RFC 2965定義的origin事務的請求主機。它默認爲cookielib.request_host(self)。 這是用戶啓動的原始請求的主機名或IP地址。 例如,若是請求是針對HTML文檔中的圖像,則該請求應該是包含圖像的頁面請求的請求主機。
unverifiable應該代表請求是否沒法驗證,如RFC 2965所定義。它默認爲False。 沒法驗證的請求是用戶沒法選擇批准的URL。 例如,若是請求是針對HTML文檔中的圖像,而且用戶沒有選擇批准自動獲取圖像,則應該這樣。
import urllib2 url = 'http://www.baidu.com' request = urllib2.Request(url) print request
運行結果:
C:\Python27\python.exe E:/python/GitHack-master/lib/test.py <urllib2.Request instance at 0x00000000034F0088>
返回一個Request實例
官方文檔:https://docs.python.org/zh-cn/2.7/library/urllib2.html#module-urllib2
打開URL ,url能夠是字符串或Request對象。
data能夠是指定要發送到服務器的其餘數據的字符串,若是不須要這樣的數據,則爲None。 目前,HTTP請求是惟一使用數據的請求; 提供數據參數時,HTTP請求將是POST而不是GET。 數據應該是標準application / x-www-form-urlencoded格式的緩衝區。 urllib.urlencode()函數採用2元組的映射或序列,並以此格式返回一個字符串。 urllib2模塊使用Connection發送HTTP / 1.1請求:包括close頭。
可選的timeout參數指定阻塞操做(如鏈接嘗試)的超時(以秒爲單位)(若是未指定,將使用全局默認超時設置)。 這實際上僅適用於HTTP,HTTPS和FTP鏈接。
若是指定了context,則它必須是描述各類SSL選項的ssl.SSLContext實例。 有關更多詳細信息,請參閱HTTPSConnection。
可選的cafile和capath參數爲HTTPS請求指定一組可信CA證書。 cafile應指向包含一組CA證書的單個文件,而capath應指向散列證書文件的目錄。 能夠在ssl.SSLContext.load_verify_locations()中找到更多信息。
cadefault參數被忽略。
此函數返回一個相似文件的對象,其中包含三個附加方法:
geturl() - 返回檢索到的資源的URL,一般用於肯定是否遵循重定向
info() - 以mimetools.Message實例的形式返回頁面的元信息,例如headers(請參閱HTTP標題的快速參考)
getcode() - 返回響應的HTTP狀態代碼。
import urllib2 url = 'http://www.baidu.com' request = urllib2.Request(url) print urllib2.urlopen(request)
運行結果:
C:\Python27\python.exe E:/python/GitHack-master/lib/test.py <addinfourl at 58013064L whose fp = <socket._fileobject object at 0x00000000034F67C8>>
返回一個socket._fileobject 對象,也就是個文件對象
官方文檔:https://docs.python.org/zh-cn/2.7/library/urllib2.html#module-urllib2
(Windows版)映射文件句柄fileno指定的文件的length字節,並建立mmap對象。 若是length大於文件的當前大小,則文件將擴展爲包含length字節。 若是length爲0,則映射的最大長度是文件的當前大小,但若是文件爲空,則Windows引起異常(您沒法在Windows上建立空映射)。
tagname,若是指定而不是None,是一個字符串,給出映射的標記名稱。 Windows容許您針對同一文件具備許多不一樣的映射。 若是指定現有標記的名稱,則會打開該標記,不然將建立此名稱的新標記。 若是省略此參數或None,則建立沒有名稱的映射。 避免使用tag參數將有助於保持代碼在Unix和Windows之間可移植。
offset能夠指定爲非負整數偏移量。 mmap引用將相對於文件開頭的偏移量。 offset默認爲0. offset必須是ALLOCATIONGRANULARITY的倍數。
Memory-mapped file objects的行爲相似於字符串和文件對象。 然而,與普通的字符串對象不一樣,這些是可變的。 您能夠在大多數須要字符串的地方使用mmap對象; 例如,您可使用re模塊搜索內存映射文件。 因爲它們是可變的,您能夠經過執行obj [index] ='a'來更改單個字符,或者經過分配給切片來更改子字符串:obj [i1:i2] ='...'。 您還能夠從當前文件位置開始讀取和寫入數據,並經過seek()搜索文件到不一樣的位置。
官方文檔:https://docs.python.org/zh-cn/2.7/library/mmap.html#module-mmap
返回dict子類的實例,支持經常使用的dict方法。OrderedDict是一個dict,它記住鍵第一次插入的順序。若是一個新條目覆蓋了一個現有條目,原始插入位置將保持不變。刪除條目並從新插入將把它移動到末尾。
有序字典就像普通字典同樣,可是它們記住條目插入的順序。當遍歷一個有序的字典時,條目將按照它們的鍵首先被添加的順序返回。
官方文檔:https://docs.python.org/zh-cn/2.7/library/collections.html#collections.OrderedDict
cmp指定一個由兩個參數(迭代元素)組成的自定義比較函數,根據第一個參數是小於、等於仍是大於第二個參數,該函數應該返回一個負數、零仍是正數:cmp=lambda x,y: cmp(x.lower(), y.lower())。默認值是None
key指定一個參數的函數,該函數用於從每一個列表元素中提取比較鍵:key = str.lower。 默認值爲None(直接比較元素)。
reverse 爲一個布爾值。 若是設爲 True,則每一個列表元素將按反向順序比較進行排序。
一般,鍵和反向轉換過程比指定等效的cmp函數要快得多。這是由於cmp對每一個列表元素調用屢次,而鍵和反向觸摸每一個元素僅一次。使用functools。cmp to key()將舊式cmp函數轉換爲鍵函數。
官方文檔:https://docs.python.org/zh-cn/2.7/library/functions.html#sorted