Python零基礎入門二十之爬蟲之抓取有道詞典

2021-07-26 06:39:14 字數 2056 閱讀 1158

這個例子主要是實現我們在python中實現有道詞典的功能,還是通過抓取有道詞典的翻譯的核心**來實現。

首先我們先開啟有道詞典的網頁來踩踩點。

有了url之後還不行,我們這次不是抓取,而是要向網頁中傳送資料,所以要找到網頁提交的表單。

繼續往下看,便找到了我們的表單資料

這樣之後,我們的踩點工才完成了,下面開始**的編寫。在編寫**之前,我們再說一下urlopen這個函式:

關於data的資料型別過的問題,python文件中也給出了我們答案

上述文件中主要的字段我給翻譯過來了:

對於http post請求方法,資料應該是標準應用程式/ x-www-form-urlencoded格式的緩衝區。urllib.parse.urlencode()函式接受2元組的對映或序列,並返回此格式的ascii字串。它應該被編碼為位元組,然後用作資料引數。

也就是說我們首先需要將表單資料以二元組序列儲存起來,這裡我們使用字典,然後使用urllib.parse.urlencode()函式將資料進行格式的轉換,最後對資料進行編碼。

在這裡,先簡單的說一下decode和encode兩個函式的作用:

decode 的作用是將其他編碼的字串轉換成 unicode 編碼,

eg name.decode(「gb2312」),表示將gb2312編碼的字串name轉換成unicode編碼

encode 的作用是將unicode編碼轉換成其他編碼的字串,

eg name.encode(」gb2312「),表示將gb2312編碼的字串name轉換成gb2312編碼

python中使用的編碼是unicode編碼。

import urllib.request

import json

url=''

#建立乙個字典

data={}

data['type'] = 'auto'

data['i'] = 'exciting'

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編碼

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

target=json.loads(html)

print(target['translateresult'][0][0]['tgt'])

其實我們獲得的html資料是這樣的:

我們可以看到我們要找的資料就在裡面,我們需要將裡面的資料提取出來,其實這是乙個json型別的資料,我們可以使用json模組的loads方法解析出該字串,實際上就是反序列化操作。經過反序列或操作之後我們便可以得到乙個字典,然後一步步便可以提取出我們要的資料。

Python零基礎入門之函式

函式的命名空間和作用域 函式的三類命名空間 內建 全域性 區域性 兩大作用域 全域性 內建和全域性命名空間都屬於全域性作用域 區域性 區域性命名空間屬於區域性作用域 什麼是作用域鏈?就是由外而內的命名空間中的中的變數的生存週期都是就近原則 全域性作用域 大區域性作用域 小區域性作用域 函式的兩大引數...

Python零基礎入門

python零基礎入門 第一周前言 最近在簡單學習python,在之前的學習中也只對c語言有了乙個粗略的了解,可以說在程式設計方面沒有什麼基礎,當然這也是我第一次寫部落格,希望自己越學越好,希望自己加油 在這一周中,還是學習到了不少的東西,也希望把自己學到的東西寫下來,來加強對python的學習,若...

Python入門零基礎

開始認識 不要害怕面對一串密密麻麻的英文本元。如果你將它們獨自分開,你會發現它們就像英文單詞,都有固定的作用。不要被第一眼的陌生感所產生的恐懼給蒙蔽。而要將 看成 變數 可以用來儲存字面量,變數本身沒有任何意思 如 a hello world abc 1,dfg 2,c abc dfg。其中a ab...