實戰隱藏
異常處理
scrapy
又稱為網頁蜘蛛,在網頁上獲取所需要的資訊。
url + lib= urllib
urllib
爬取網頁html**
)#改為utf-8的編碼
(html)
#列印訊息體
(response.info())
#列印請求資訊
(response.getcode())
#列印請求返回碼
通過有道翻譯api實現輸入內容的翻譯:
import urllib.request
import urllib.parse
import json
url =
''content =
input
('請輸入需要翻譯的內容:'
)data =
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
(target[
"translateresult"][
0][0
]['tgt'
])
實現結果
python在進行post請求時,會將post請求的使用者標識為python,因此可能會被伺服器拒絕連線,所以需要修改使用者標識。
head =
req = urllib.request.request(url, data, head)
#以下為urlopen #略過,見上節
#以上為urlopen
print
(req.headers)
#修改http 的請求頭中的user-agent欄位為自己瀏覽器的字段
迴圈翻譯請求
import urllib.request
import urllib.parse
import json
import time
while
true
: url =
''''' head =
'''content =
input
('請輸入需要翻譯的內容:(輸入"q!"退出程式)'
)if content ==
'q!'
:break
data =
data = urllib.parse.urlencode(data)
.encode(
'utf-8'
)#req = urllib.request.request(url, data, head)
req = urllib.request.request(url, data)
req.add_header(
'user-agent'
, 'mozilla/
5.0(windows nt 10.0
537.36
(khtml, like gecko)\
chrome/
87.0
.4280
.88 safari/
537.36')
response = urllib.request.urlopen(url, data)
html = response.read(
).decode(
'utf-8'
) target = json.loads(html)
print
(target[
"translateresult"][
0][0
]['tgt'])
time.sleep(3)
#print(req.headers)
執行結果
請輸入需要翻譯的內容:(輸入"q!"退出程式)刷漆brush paint
請輸入需要翻譯的內容:(輸入"q!"退出程式)帥氣
handsome
請輸入需要翻譯的內容:(輸入"q!"退出程式)q!
程序已結束,退出**0
步驟:1,引數時乙個字典
proxy_support = urllib.request.proxyhandler({})
2,定製、建立乙個opener
opener = urllib.request.build_opener(proxy_support)
3a,安裝opener
urllib.request.install_opener(opener)
3b,呼叫opener
opener.open(url)
import re
#search 用於正規表示式查詢第一次出現的位置
print
(re.search(r'moliam'
,'i am moliam'))
# .(英文句號):代表除了換行符的任何字元,所以返回0,匹配為i
print
(re.search(r'.'
,'i am moliam'))
print
(re.search(r'm.'
,'i am moliam'))
#加上\去除.的萬用字元
print
(re.search(r'\.'
,'i am moliam.'))
#\d 匹配任何單個數字 數字對於字串只有0-9
print
(re.search(r'\d\d\d'
,'i am moliam.100'))
# 字元類:只要匹配字元類中的任何元素都算匹配,大小寫敏感
print
(re.search(r'[aeiou]'
,'i am moliam.100'))
# - 表示範圍
print
(re.search(r'[a-z]'
,'i am moliam.100'))
# {} 限定重複次數 下例中b要有且只能重複3次
print
(re.search(r'abc'
,'abbbc'))
# 3-10次重複 均可算匹配成功
print
(re.search(r'abc'
,'abbbc'))
#尋找字串中的0-255 | 為邏輯或 必須寫3位
print
(re.search(r'[01]\d\d|2[0-4]\d|25[0-5]'
,'233'))
print
(re.search(r'[01]\d\d|2[0-4]\d|25[0-5]'
,'3'
))
執行結果
none菜鳥教程正規表示式的詳細介紹
提取結構性資料的框架
urllib實現簡單的爬蟲
url就是 的意思,而urllib是python自帶的用於操作 的標準庫,其中有request parse error robotsparser四個模組,request用於開啟和讀取網頁,parse用於解析url,error用於處理異常 只有urlerror和httperror兩個函式 robots...
再學爬蟲 urllib
urllib是python內建的http請求庫,主要包括4個模組 request error parse robotparser。import urllib.request response urllib.request.urlopen print type response 結果,返回乙個http...
使用urllib的網路爬蟲
重要的三個內容 請求頭 請求方式 open方式 from urllib import request1 定義請求 構造請求頭 header 構造formdata formdata 對formdata進行url編碼處理 data request.parse.urlencode formdata enc...