Python語言學習(十二)

2021-10-01 04:01:53 字數 3800 閱讀 8246

167、爬蟲**舉例1:

import urllib.request

import urllib.parse

import json

content=

input

('請輸入需要翻譯的內容:'

)url=

''#request url

data=

data[

'i']

=content

data[

'from']=

'auto'

data[

'to']=

'auto'

data[

'smartresult']=

'dict'

data[

'client']=

'fanyideskweb'

data[

'salt']=

'1536137270843'

data[

'sign']=

'22bea357b7e89f725e8975b62fce9993'

data[

'doctype']=

'json'

data[

'version']=

'2.1'

data[

'keyfrom']=

'fanyi.web'

data[

'action']=

'fy_by_clickbuttion'

data[

'yporesult']=

'false'

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'])

)

其中url使我們要訪問的**,在**的審查元素中post資料中的request url可以得到。data是乙個字典,字典的內容在request headers中(全部)。得到的將是乙個列表,需要用read()函式讀取,同時要用decode()函式轉換為utf-8編碼形式才能正常讀取

168、urllib.requeset.requset()函式,格式為:

物件=urllib.request.

request

(url, data=none, headers=

, origin_req_host=none, unverifiable=false, method=none)

url必須字串,為我們要訪問的**

data可選資料物件,多為字典型別。是指定要傳送到伺服器的附加資料的物件,如果不需要這樣的資料,則不需要任何資料。目前http請求是唯一使用資料的請求,支援的物件型別包括位元組、類檔案物件和可迭代物件。

headers可選字典,通過修改可以模擬正常的瀏覽器訪問。可以直接匯入字典,也可以通過函式add_header()將字典加入函式。headers的內容是user-agent後面的內容

169、爬蟲**舉例2:

import urllib.request

import urllib.parse

import json

content=

input

('請輸入需要翻譯的內容:'

)url=

''#request url

'''方法一

head=

head[

'user-agent']=

'''data=

data[

'i']

=content

data[

'from']=

'auto'

data[

'to']=

'auto'

data[

'smartresult']=

'dict'

data[

'client']=

'fanyideskweb'

data[

'salt']=

'1536137270843'

data[

'sign']=

'22bea357b7e89f725e8975b62fce9993'

data[

'doctype']=

'json'

data[

'version']=

'2.1'

data[

'keyfrom']=

'fanyi.web'

data[

'action']=

'fy_by_clickbuttion'

data[

'yporesult']=

'false'

data=urllib.parse.

urlencode

(data)

.encode

('utf-8'

)rep=urllib.request.

request

(url,data)

rep.

add_header

('user-agent',)

response=urllib.request.

urlopen

(rep)

html=response.

read()

.decode

('utf-8'

)target=json.

loads

(html)

print

('翻譯結果是:%s'

%(target[

'translateresult'][

0][0

]['tgt'])

)

可以在生成前引數修改,或者生成後通過add_header(key,valu)新增

170、ip位址的單位時間內訪問不能超過乙個閾值,所以有兩種方法,一種是延遲提交時間,一種是進行**。延遲可以通過time模組來直接完成即可。

(1)time()直接通過乙個大的迴圈,每一步停留time()秒即可

(2)**,相當於用**的ip位址代替你的ip位址來實現隱藏的目的。首先要先設定乙個字典,引數是,**ip位址可以從這個**找格式為:

proxy_support=urllib.request.

proxyhandler

(),其中字典為

然後定製,建立乙個opener,相當於私人定製,格式為:

opener=urllib.request.

build_opener

(proxy_support)

然後安裝opener,將其安裝到系統中,這是乙個一勞永逸的辦法,之後只要使用opener就可以使用定製好的opener,格式為:

urllib.request.

install_opener

(opener)

如果不想進行安裝替換掉預設的opener,可以通過opener.open(url)臨時呼叫

Python語言學習

字串迴圈左移 10分 題目內容 給定乙個字串s,要求把s的前k個字元移動到s的尾部,如把字串 abcdef 前面的2個字元 a b 移動到字串的尾部,得到新字串 cdefab 稱作字串迴圈左移k位。輸入乙個字串和乙個非負整數n,要求將字串迴圈左移n次。可以使用以下語句實現字串s的輸入 s str i...

語言學習 Python學習

1.關於識別符號 python 中的識別符號是區分大小寫的。以下劃線開頭的識別符號是有特殊意義的。以單下劃線開頭 foo 的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不能用 from import 而匯入 以雙下劃線開頭的 foo 代表類的私有成員 以雙下劃線開頭和結尾的 foo 代表 ...

Go語言學習筆記十二 Go語言切片

1 package main 23 import fmt 45 切片定義 切片是基於陣列型別的一層封裝。它非常靈活,可以自動擴容,切片是乙個引用型別 6func main else 16 b 0 100 這種寫法是錯誤的,切片必須先初始化 17var c 5 int 5 int 18 fmt.pri...