基於urllib的簡單爬蟲

2021-10-19 10:48:10 字數 4123 閱讀 7594

實戰隱藏

異常處理

scrapy

又稱為網頁蜘蛛,在網頁上獲取所需要的資訊。

url + lib= urllib

urllib

爬取網頁html**

)#改為utf-8的編碼

print

(html)

#列印訊息體

print

(response.info())

#列印請求資訊

print

(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...