Python入門--13--爬蟲一

URL的格式通常爲(帶方括號的是可選的):html

protocol://hostname[:port]/path/[;parameters][?query]#fragmentpython

 

URL由三部分組成:小程序

  第一部分是協議:http https  ftp  file  ed2k瀏覽器

  第二部分是存放資源的放武器的域名系統或IP地址(有時候要包含端口號)服務器

    各類傳輸協議都有默認的端口號,http的默認端口號就是80網絡

  第三部分是資源的具體地址,如目錄或文件名等數據結構

 

python3.0版本以後就把urllib和urllib2合併了,變爲一個urllib包函數

下面先用urllib.request寫個小程序post

import urllib.request編碼

wangye = urllib.request.urlopen('http://www.baidu.com')

html=wangye.read()

print (html)

##輸出的全是亂碼是否是  ,由於他是二進制的格式

import urllib.request

wangye = urllib.request.urlopen('http://www.baidu.com')

html=wangye.read()

html=html.decode('utf-8')

print (html)

##這就轉化爲你在瀏覽器的網頁裏面按F12的效果,是他們的源代碼

 

1、抓取一隻貓

import urllib.request

wangye=urllib.request.urlopen('http://placekitten.com/g/500/500')

cat_img = wangye.read()

with open('cat_500_600'+'.jpg','wb') as f:

  f.write(cat_img)

 

#reques有兩種用法 一種是'urlopen'後面加上網址,另一種是urllib.request.Request加上網址

 

import urllib.request

pro_wangye=urllib.request.Request('http://placekitten.com/g/500/500')

wangye=urllib.request.open(pro_wangye)

cat_img = wangye.read()

with open('cat_500_600'+'.jpg','wb') as f:

  f.write(cat_img)

因此直接用urlopen就好

2、一些函數
wangye.geturl()  #輸出的是http://placekitten.com/g/500/500

print(wangye.info())  #輸出一堆網絡的屬性什麼的

wangye.getcode()  #若是輸出200說明服務器狀態沒問題,正常相應

3、在編一個小程序:有道翻譯

 注意:

一、這個urlopen有個參數data,若是其被賦值,則函數就會post,來取代get

二、data的格式必須是特定的,須要使用:urllib.parse.urlencode()進行一下編碼,編譯成url的格式

    並且這個urllib.parse是一個模塊的 須要載入

 

 

 

 

 

 

 

 

 

 

 

 

 

4、一些知識點

remote address:服務器ip地址+打開的端口號

request url:打開的地址

status code:服務器的狀態,200是正常,404是頁面不見了

request header:客戶端、瀏覽器的意思 #通常經過這個裏面的users-agent來判斷是代碼訪問仍是人的訪問

      使用:  一、req=urllib.request.Request(url,data,header)     #提早寫好header,這是個字典

    或者使用:二、req=urllib.request.Request(url,data)

           req.add_header('UserAgent','Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36                         (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36')

 

JSON:這是一種輕量級的數據交換格式,說白了就是這裏就是字符串把Python的數據結構封裝起來,便於儲存和使用

 

HTTP有好幾種方法(GET、POST、PUT、HEAD、DELETE、OPTIONS、CONNECT),請問如何知道python使用的哪種:

答:使用get_method()方法獲取request對象具體使用那種方法訪問服務器,當request的Data參數被賦值的時候,get_method()返回的'POST',不然返回'GET'

相關文章
相關標籤/搜索