一、下載一隻貓
import urllib.request response = urllib.request.urlopen("http://cdn.duitang.com/uploads/item/201111/24/20111124222137_wHYwc.jpg") cat_img = response.read() with open('cat_0.jpeg', 'wb') as f: f.write(cat_img)
urlopen()中的url可以是string,也可以是request object,因此可以是:
import urllib.request req = urllib.request.Request("http://cdn.duitang.com/uploads/item/201111/24/20111124222137_wHYwc.jpg") response = urllib.request.urlopen(req) cat_img = response.read() with open('cat_0.jpeg', 'wb') as f: f.write(cat_img)
response.geturl()得到url地址
response.info()得到HTTPMessage物件,可以通過print()得到head資訊
response.getcode()得到伺服器的狀態碼200(正常響應)
二、利用有道詞典翻譯文字
<審查元素>network——preview,找到需要的path
然後切到headers——關注general、request headers(客戶端傳送請求的headers,服務端可以在此判斷是否人為訪問,User-Agent)python url/3.4、From Data、
urlopen()中data為None以get提交,有引數用post方式提交,data引數必須是一個標準格式application/x-www-form-urlencoded,可以用urllib.parse.urlencode()來將字串轉化為這個格式
import urllib.request import urllib.parse import json url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=http://fanyi.youdao.com/' data = { 'i':'china', 'from':'AUTO', 'to':'AUTO', 'smartresult':'dict', 'sign':'cf928c9af5dc3731276ad09db002e052', 'client':'fanyideskweb', 'salt':'1494249290636', 'doctype':'json', 'version':'2.1', 'keyfrom':'fanyi.web', 'action':'FY_BY_CLICKBUTTON', 'typoResult':'true' } data = urllib.parse.urlencode(data).encode('utf8') response = urllib.request.urlopen(url, data) html = response.read().decode('utf-8') print(html) #發現是json格式 target = json.loads(html) print(target) #列印還原的json
但是當客戶端碼是python,並且當一個ip訪問太多後,伺服器會拉黑ip!