python:爬蟲1——實戰(下載一張圖片、用Python模擬瀏覽器,通過線上的有道詞典來對文字翻譯)...

daduryi發表於2017-05-09

一、下載一隻貓

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!

 

相關文章