現在,我們乙個個來解決問題:
(1)實現使用者的自定義和多次輸入,我們可以這樣修改**:
import urllib.request
import json
url=''
while
true:
content=input("請輸入你要翻譯的內容(q表示退出程式):")
if content == 'q':
break
#建立乙個字典
data={}
data['type'] = 'auto'
data['i'] = content
data['doctype'] = 'json'
data['xmlversion'] = '1.8'
data['keyfrom'] = 'fanyi.web'
data['ue'] = 'utf-8'
data['action'] = ['fy_by_clickbutton']
data['typoresult']= 'true'
#在這裡還不能直接將data作為引數,需要進行一下資料的解析才可以
#encode是將unicode的編碼轉換成utf-8編碼
data=urllib.parse.urlencode(data).encode('utf-8')
response=urllib.request.urlopen(url,data)
#decode作用是將其他形式的編碼轉換成python使用的unicode編碼
下面再來解決第二個問題,我們有兩種方法來解決問題。
如果要解決這個問題,我們還要簡單收一下urlopen函式,之前我們給其傳遞的引數都是url,其實它的引數也可以是request方法返回的物件,在這裡我們要用這種賦值方法來解決問題,那麼user-agent引數修改為什麼呢?我們直接將用瀏覽器訪問時的user-agent引數拷貝下來就可以了。
**如下:
import urllib.request
import urllib.parse
import json
while(true):
content=input("請輸入你要翻譯的內容(輸入q退出程式):")
if content=='q':
break
url=''
#第一種方法
#head必須是字典型別的引數
head={}
data={}
data['type']='auto'
data['i']= content
data['doctype']= 'json'
data['xmlversion']= '1.8'
data['keyfrom']= 'fanyi.web'
data['ue']= 'utf-8'
data['action']= 'fy_by_clickbutton'
data['typoresult']='true'
data=urllib.parse.urlencode(data).encode('utf-8')
req=urllib.request.request(url,data,head)
response=urllib.request.urlopen(req)
html=response.read().decode('utf-8')
target=json.loads(html)
#print(html)#json格式的資料
print("翻譯結果:%s"%(target['translateresult'][0][0]['tgt']))
也可以使用add_header()函式
關於add_header()函式的官方文件給出的用法。
req=urllib.request.request(url,data)
這樣便可以實現隱藏了。
最後解決第三個問題
(1)一是手動加上延遲
import time
time.sleep(5)
加上這兩行**就可以了,但是每次輸入完成後需要等5秒才能輸入,這樣顯然不能滿足使用者的要求,下面我們使用**來解決這個問題。
當我們使用**的時候,去訪問我們要訪問的**時,我們只需要將要訪問的**給**,**將把你需要的內容給你
這樣去訪問**的就不是自己,而是交給**去訪問
使用**的步驟:
1.引數是乙個字典
proxy_support=urllib.request.proxyhandler({})
2.定製,建立乙個opener(私人定製)
opener=urllib.request.build_opener(proxy_support)
3.安裝opener
urllib.request.install_opener(opener)
4.呼叫opener
opener.open(url)
我們按照步驟來解決新增**:
我們可以訪問 ,這個**將把我們訪問這個**的ip反饋給我們,這樣我們就能夠知道是否是使用**訪問了。
import urllib.request
import random
#列印自己的ip
url=""
#我們可以使用乙個**的列表,以免伺服器有卡頓
iplist=['123.55.194.43:9999','110.73.1.254:8123']
proxy_support=urllib.request.proxyhandler()
opener=urllib.request.build_opener(proxy_support)
#加上頭部
Python零基礎入門二十之爬蟲之抓取有道詞典
這個例子主要是實現我們在python中實現有道詞典的功能,還是通過抓取有道詞典的翻譯的核心 來實現。首先我們先開啟有道詞典的網頁來踩踩點。有了url之後還不行,我們這次不是抓取,而是要向網頁中傳送資料,所以要找到網頁提交的表單。繼續往下看,便找到了我們的表單資料 這樣之後,我們的踩點工才完成了,下面...
零基礎學Python(第二十一章 OS檔案目錄)
os模組是python標準庫中的乙個用於訪問作業系統相關功能的模組,os模組提供了一種可移植的使用作業系統功能的方法。使用os模組中提供的介面,可以實現跨平台訪問。但是,並不是所有的os模組中的介面在全平台都通用,有些介面的實現是依賴特定平台的,比如linux相關的檔案許可權管理和程序管理。在使用o...
python基礎(二十一) 操作SQLite
python操作 使用內建模組sqlite3 游標cursor 引數化查詢 null 什麼都不存 integer 整型 real 親源型別 浮點型 text 包含文字 blob 二進位制大型物件,是乙個可以儲存大量資料的容器 增刪改查 select from 表名 insert into 表名 列1...