小甲魚課程,通過requests實作通路并擷取資料
- 首先了解第三方urllib
首先了解第三方urllib
-
urllib是Python自帶的标準庫,無需安裝,直接可以用
主要提供了以下功能:
- 網頁請求
- 響應擷取
- 代理和cookie設定
- 異常處理
- URL解析
- (詳細用法可以百度了解一下)
因為是跟課程寫的,是以可以推薦大家去看一下視訊。
b站視訊
首先我們要擷取通路的網址
> 在百度搜尋 ‘有道翻譯’
> 然後打開,檢視源代碼,點選Network,然後在翻譯框裡随便輸入一個翻譯内容,便可發現源代碼框裡有一個translate開頭的一個子產品點選進去,找到Headers下的
> Request URL:Request URL: http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
> 這個就是我們要的通路網址。
如圖
接下來再找到data闆塊,将裡面的内容複制下來
找到這兩部分接下來就可以寫代碼了。
代碼
```python
import urllib.request
import urllib.parse
import json #導入庫
content = input("請輸入要翻譯的内容 : ") #讀取翻譯内容
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' #将通路網址指派給url 變量。這裡要删除掉‘_o’這一部分要不然可能通路失敗
data = {} #定義一個字典,将data資料存入
data['i'] = content
data['doctype'] = 'json'
# data = urllib.parse.urlencode(data).encode('utf_8')
# response = urllib.request.urlopen(url, data)
# html = response.read().decode('utf-8')
# target = json.loads(html)
# print("result: %s" % (target['translateResult'][0][0]['tgt']))
#後來發現隻需要将 ‘i’,‘docype’ 存入就可以了,其他的無所謂。
data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url, data)
html = response.read().decode('utf-8')
target = json.loads(html)
print("翻譯的結果為 : %s" % (target['translateResult'][0][0]['tgt']))
**接下來就可以嘗試一下了。**