會使用到urllib中的 urllib.urlencode() 方法來編碼傳送請求時候的 請求引數
url編碼轉換:urllib的urlencode()
urllib 模組僅可以接受url,不能建立 設定了headers 的request 類例項;
但是 urllib 提供 urlencode 方法用來產生get查詢字串,而 urllib2 則沒有。(這是 urllib 和 urllib2 經常一起使用的主要原因)
編碼工作使用urllib的urlencode()函式,幫我們將key:value這樣的鍵值對,轉換成"key=value"這樣的字串,解碼工作可以使用urllib的unquote()函式。( 注意,不是urllib2.urlencode())
# ipython2 中的測試結果
in [1]: import urllib
# 通過urllib.urlencode()方法,將字典鍵值對按url編碼轉換,從而能被web伺服器接受。
in [3]: urllib.urlencode(word)
out[3]: "wd=%e4
%bc%a0
%e6%99
%ba%e6
%92%ad
%e5%ae
%a2"
# 通過urllib.unquote()方法,把 url編碼字串,轉換回原先字串。
in [4]: print urllib.unquote("wd=%e4
%bc%a0
%e6%99
%ba%e6
%92%ad
%e5%ae
%a2")
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib
import urllib2
import os
import time
defget_request
(url):
"""發起請求"""
header =
# 編碼
keyword = urllib.urlencode(keyword)
start_time = time.time()
for page in range(start_page, end_page + 1):
pn = urllib.urlencode()
url = base_url + keyword + "&" + pn
html = get_request(url)
write_html(html, page)
print
"結束時間", time.time() - start_time
defmain
():"""程式的入口"""
# name = raw_input("請輸入你要爬取的貼吧的名稱:>>>")
name = "美女"
start_page = int(raw_input('請輸入開始的頁碼:>>>'))
end_page = int(raw_input('請輸入結束的頁碼:>>>'))
spider(name, start_page, end_page)
if __name__ == "__main__":
main()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib
import urllib2
import os
from threading import thread
import threading
import time
defget_request
(url):
"""發起請求"""
header =
# 編碼
keyword = urllib.urlencode(keyword)
t_list = # 存放建立的執行緒
start_time = time.time()
for page in range(start_page, end_page + 1):
pn = urllib.urlencode()
url = base_url + keyword + "&" + pn
# 建立執行緒物件
t = thread(target=thread_task, args=(url, page))
# 開啟執行緒
t.start()
# 使用join 加入等待 執行緒結束
for t in t_list: # 遍歷執行緒加入等待
t.join()
print ("結束時間", time.time() - start_time)
defmain
():"""程式的入口"""
# name = raw_input("請輸入你要爬取的貼吧的名稱:>>>")
name = "美女"
start_page = int(raw_input('請輸入開始的頁碼:>>>'))
end_page = int(raw_input('請輸入結束的頁碼:>>>'))
spider(name, start_page, end_page)
if __name__ == "__main__":
# 判斷資料夾的程式放在了主程式中 防止多個執行緒同時去執行這段** 這裡沒有使用執行緒鎖
ifnot os.path.exists('./貼吧'):
os.mkdir('./貼吧')
main()
keras初識 乙個簡單的深度學習小案例
keras是乙個高效 易用的深度學習框架,它對theano和tensorflow進行了高階封裝,使得我們能僅用幾行 就能實現乙個深度學習模型。本篇筆記意在簡單了解下keras在搭建深度學習模型時的流程。主要章節如下 完成上述內容需要以下環境 python2 3 scipy和numpy kears安裝...
乙個簡單工廠模式小案例
最基本的計算器功能也可以通過工廠模式實現 用到了繼承和多型 抽出乙個主類運算類,為了符合開閉原則,對修改關閉,對擴充套件開放 在該類中定義兩個做運算的變數a和b 提供乙個etresult方法 新建四個算術運算類繼承運算類,重寫getresult方法,根據自己的型別返回需要的結果 重寫result方法...
乙個小爬蟲
usr bin env python coding utf 8 sina小爬蟲 site http 不能少哦 reptile sina reptitle site print getting the urls.n reptile sina.get urls site reptile sina.sto...