學習爬蟲基礎5 乙個簡單的小案例

2021-09-30 14:29:42 字數 2854 閱讀 9217

會使用到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...