python 0基礎學習筆記14 爬蟲

2021-09-29 05:30:49 字數 3816 閱讀 4188

#爬取網頁

import urllib.request

#向指定的url位址發起請求,並返回伺服器響應的資料(檔案物件)

response = urllib.request.urlopen(

'')#讀取檔案的全部內容,會把讀取到的資料賦值給乙個字串變數

data = response.read(

)#.decode('utf-8')

print

(data)

print

(type

(data)

)#讀取一行

data1 = response.readline(

)#讀取檔案的全部內容,會把讀取到的資料賦值給乙個列表變數

data2 = response.readlines(

)print

(data2)

print

(type

(data2)

)print

(len

(data2)

)print

(type

(data2[

100]

.decode(

'utf-8'))

)#編碼以後才是字串

# #將爬取到的網頁寫入到檔案

with

open

(r'e:\程式\mlp\爬蟲\file\file.html'

,'wb'

)as f:

f.write(data)

#response屬性:

print

(response.info())

#但會當前環境的有關資訊

print

(response.getcode())

#返回狀態碼,200表示成功,304說明有快取

if response.getcode()==

200or response.getcode()==

304:

#處理pass

print

(response.geturl())

#返回當前正在爬取的url位址

url = r''

print

(urllib.response.unquote(url)

)#解碼

print

(urllib.response.quote(url)

)#編碼

#法二:將爬取到的網頁直接寫入檔案,urlretrieve在執行過程中,會產生一些快取

urllib.request.urlretrieve(

'',filename=r'e:\程式\mlp\爬蟲\file\file2.html'

)#清除快取

urllib.request.urlcleanup(

)#設定超時,若網頁長時間為響應,系統判斷超時,無法爬去

for i in

range(1

,100):

try:

responce = urllib.request.urlopen(

'',timeout=

0.5)

print

(len

(responce.read(

).decode(

'utf-8'))

)except

:print

('請求超時,繼續下乙個爬取'

)

get:通過url**傳遞資訊,可以直接在url**上新增要傳遞的資訊

post:可以向伺服器提交資料,是一種比較流行的比較安全的資料傳遞方式

put:請求伺服器儲存乙個資源,通常要指定儲存的位置

delete:請求伺服器刪除乙個資源

head:請求獲取對應的http報頭資訊

options:可以獲取當前utl所支援的請求型別

#get請求:特點:把資料拼接到請求路徑的後面傳遞給伺服器,優點是速度快,缺點是承載的資料量小,不安全

import urllib.request

url =

'這裡寫伺服器位址'

response = urllib.request.urlopen(url)

data = response.read(

).decod(

'utf-8'

)print

(data)

print

(type

(data)

)

概念:一種儲存資料的格式

作用:可以儲存本地的json檔案,也可以將json串進行傳輸,通常將json稱為輕量級的傳輸方式

json檔案組成:

{}:代表物件(字典)

:代表牌列表

:代表鍵值對

,分隔兩個部分

#將json格式的字串轉為python資料型別的物件

import json

jsonstr =

''#xml檔案的內容

jsondata = json.loads(jsonstr)

print

(jsondata)

#print

(type

(jsondata))#

#將python資料型別的物件轉為json格式的字串

jsondata2 =

jsonstr2 = json.dumps(jsondata2)

print

(jsonstr2)

#print

(type

(jsonstr2))#

#讀取本地的json檔案:

path1 = r''

with

open

(path1,

'rb'

)as f:

data = json.load(

)#不加s就是讀取本地

print

(data)

print

(type

(data)

)#此時讀的是字典型別

#寫本地的json檔案:

path2 = r''

jsondata3 =

#現在是字典格式

with

open

(path2,

'w')

as f:

json.dump(jsondata3,f)

#寫進去就是json格式

post請求:

特點:把引數進行打包,單獨傳輸

優點:數量大,安全(當對伺服器資料進行修改時建議使用post)

缺點:速度慢

import urllib.request

import urllib.parse

ur1 =

'這裡寫伺服器位址'

#將要傳送的資料合成乙個字典,字典的鍵值去**裡找,一般為input標籤的name屬性的值

data =

#將要傳送的資料進行打包,記住編碼

postdata = urllib.parse.urlencode(data)

.encode(

'utf-8'

)#請求體

req = urllib.request.request(ur1,data=postdata)

#請求req.add_header(

'........'

)response = urllib.request.urlopen(req)

print

(response.read(

).decode(

'utf-8'

))

python 0基礎入門課筆記

參加了一次入門的體驗課,對我來說內容是比較淺的,但是課程設計得確實用心,值得為此付費 程式語言是為和機器溝通,所以,先要讓機器能與你對話,python裡讓機器說話的語句是 print 從名字不難理解,機器說話其實就是把內容列印到螢幕上的過程,至於說啥呢,就是括號裡的內容 那如何表達說的內容呢?高考給...

python0基礎學習之常用模組

模組 module 它特指就是 py檔案如果預設沒有在包中 import x import random import uuid,sys import os.path as 別名 from 包路徑 import 模組名稱 from 包路徑.模組名稱 import 方法 類 變數 from funct...

Python 0基礎 第二章 python語言基礎

我的課本學習筆記 1.拼接字串,前後需要都轉成字串的格式,則不需要 money all 56.75 72.91 88.50 26.37 68.51 累加總計金額 money all str str money all 轉換為字串 print 商品總金額為 money all str print 商品...