Python爬蟲Urllib庫的基本使用

1 先扒一個網頁下來看看


import urllib2
response=urllib2.urlopen("http://www.baidu.com")
print response.read()


然后你就獲得到了一個網頁的源代碼

response=urllib2.urlopen("http://www.baidu.com")

這個意思就是在urllib2庫中訪問urlopen函數墩朦,傳入地址獲取返回對象

urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, cafile=None, capath=None, cadefault=False, context=None)

第一個參數url即為URL扰柠,第二個參數data是訪問URL時要傳送的數據播瞳,第三個timeout是設置超時時間驾窟。
后面幾個參數cafile、capath、cadefault參數:用于實現可信任的CA證書的HTTP請求。context參數:實現SSL加密傳輸怎棱。(基本上很少用)
第二三個參數是可以不傳送的,data默認為空None绷跑,timeout默認為?socket._GLOBAL_DEFAULT_TIMEOUT
第一個參數URL是必須要傳送的拳恋,在這個例子里面我們傳送了百度的URL,執(zhí)行urlopen方法之后砸捏,返回一個response對象谬运,返回信息便保存在這里面。

print response.read()

response.read()打印獲取到的代碼詳情垦藏,response對象

2 urlopen參數可以傳入一個request請求,它其實就是一個Request類的實例梆暖,構造時需要傳入Url,Data等等的內容。比如上面的兩行代碼掂骏,我們可以這么改寫

(self, url, data=None, headers={}, origin_req_host=None, unverifiable=False):

request 的參數 header報頭

import urllib2
request = urllib2.Request("http://www.baidu.com")
response = urllib2.urlopen(request)
print response.read()

這樣代碼清晰點

POST和GET請求

POST方式:

importurllib

importurllib2

values = {"username":"100010@qq.com","password":"XXXX"}

data = urllib.urlencode(values)

url ="https://www.baidu.com"

request = urllib2.Request(url, data)

response = urllib2.urlopen(request)

printresponse.read()

隨便寫了個假的轰驳,傳參dada 就是你登錄需要驗證的信息 有些還有驗證碼什么的就另說了引入了urllib庫對字典values進行了urlencode編碼

字典的另一種定義方式 這樣更好的看到每個參數

values={}

values['username']="10010@qq.com"

values['password']="XXXX"

GET方式:

get方式就是直接把參數拼接在請求地址后面就行

importurllib

importurllib2

values={}

values['username']="10010@qq.com"

values['password']="XXXX"

data=urllib.urlencode(values)

url="http://www.baidu.com"

geturl=url+"?"+data

request=urllib2.Request(geturl)

response=urllib2.urlopen(request)

printresponse.read()

很簡單是吧

接下來是一些其他方面的應用

有些網站不會同意程序直接用上面的方式進行訪問,如果識別有問題弟灼,那么站點根本不會響應滑废,所以為了完全模擬瀏覽器的工作,我們需要設置一些Headers 的屬性袜爪。

在登錄一個界面之后就會發(fā)現里面的樣式什么的都變了,直接進入瀏覽器的調試模式薛闪,查看請求數據里面有許多的Request URL辛馆,還有headers,下面便是response豁延,圖片顯示得不全昙篙,小伙伴們可以親身實驗一下。那么這個頭中包含了許許多多是信息诱咏,有文件編碼啦苔可,壓縮方式啦,請求的agent啦等等袋狞。

其中焚辅,agent就是請求的身份映屋,如果沒有寫入請求身份,那么服務器不一定會響應同蜻,所以可以在headers中設置agent,例如下面的例子棚点,這個例子只是說明了怎樣設置的headers,小伙伴們看一下設置格式就好湾蔓。這里agent就代表瀏覽器瘫析,我們偽造瀏覽器進行訪問

importurllib

importurllib2

url ='http://www.server.com/login'

user_agent ='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

values = {'username':'cqc','password':'XXXX'}

headers = {'User-Agent': user_agent}

data = urllib.urlencode(values)

request = urllib2.Request(url, data, headers)

response = urllib2.urlopen(request)

page = response.read()

這樣我們就在進行請求的header里面加入了useragent

User-Agent : 有些服務器或 Proxy 會通過該值來判斷是否是瀏覽器發(fā)出的請求

Content-Type : 在使用 REST 接口時,服務器會檢查該值默责,用來確定

HTTP Body 中的內容該怎樣解析贬循。

application/xml : 在 XML RPC,如 RESTful/SOAP 調用時使用

application/json : 在 JSON RPC 調用時使用

application/x-www-form-urlencoded : 瀏覽器提交 Web 表單時使用在使用服務器提供的 RESTful 或 SOAP 服務時桃序, Content-Type 設置錯誤會導致服務器拒絕服務

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末杖虾,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子葡缰,更是在濱河造成了極大的恐慌亏掀,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泛释,死亡現場離奇詭異滤愕,居然都是意外死亡,警方通過查閱死者的電腦和手機怜校,發(fā)現死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門间影,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人茄茁,你說我怎么就攤上這事魂贬。” “怎么了裙顽?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵付燥,是天一觀的道長。 經常有香客問我愈犹,道長键科,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任漩怎,我火速辦了婚禮勋颖,結果婚禮上,老公的妹妹穿的比我還像新娘勋锤。我一直安慰自己饭玲,他們只是感情好,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布叁执。 她就那樣靜靜地躺著茄厘,像睡著了一般矮冬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚕断,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天欢伏,我揣著相機與錄音,去河邊找鬼亿乳。 笑死硝拧,一個胖子當著我的面吹牛躯护,可吹牛的內容都是我干的齐疙。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼匀哄,長吁一口氣:“原來是場噩夢啊……” “哼聊训!你這毒婦竟也來了抱究?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤带斑,失蹤者是張志新(化名)和其女友劉穎鼓寺,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體勋磕,經...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡妈候,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了挂滓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苦银。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赶站,靈堂內的尸體忽然破棺而出幔虏,到底是詐尸還是另有隱情,我是刑警寧澤贝椿,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布想括,位于F島的核電站,受9級特大地震影響烙博,放射性物質發(fā)生泄漏瑟蜈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一习勤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧焙格,春花似錦图毕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽囤官。三九已至,卻和暖如春蛤虐,著一層夾襖步出監(jiān)牢的瞬間党饮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工驳庭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留刑顺,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓饲常,卻偏偏與公主長得像蹲堂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子贝淤,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理柒竞,服務發(fā)現,斷路器播聪,智...
    卡卡羅2017閱讀 134,713評論 18 139
  • 一朽基、概述 urllib2是Python的一個針對URLs的庫。他以urlopen函數的形式提供了一個非常簡單的...
    MiracleJQ閱讀 1,495評論 0 5
  • 那么接下來离陶,小伙伴們就一起和我真正邁向我們的爬蟲之路吧稼虎。 1.分分鐘扒一個網頁下來 怎樣扒網頁呢?其實就是根據UR...
    xmsumi閱讀 448評論 0 0
  • 參考了一些文章枕磁,簡單寫一下urllib庫的基本使用: 1.簡單的拔取一個百度網頁 import urllib2re...
    babybus_hentai閱讀 555評論 0 1
  • urllib2是Python的一個獲取URLs的組件渡蜻。他以urlopen函數的形式提供了一個非常簡單的接口,具有利...
    查無此人asdasd閱讀 1,504評論 0 3