主頁 >  其他 > Python爬蟲圖片學習(一)

Python爬蟲圖片學習(一)

2020-09-11 07:58:33 其他

Python爬蟲學習

一、Python安裝與呼叫

  1. python官網安裝地址:https://www.python.org/

    在這里插入圖片描述

  2. python幫助手冊:在本機的路徑C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Doc

  3. 創建一個1.py檔案,右鍵打開.py檔案,用IDLE方式打開,保存后直接run F5運行或者保存后F5運行:輸出效果
    hello在十個星號中間
    在這里插入圖片描述
    定義一個用戶變數登陸
    在這里插入圖片描述
    ipuut:定義變數值
    在這里插入圖片描述

二、一些定義:

  1. 特殊陳述句:
and   并且
or   或者
not   條件取反
=      賦值
==   比較
> 、< 、!=、   >= 、<= 
  1. 變數名稱的定義:

    不能以數字開頭(如1name,下劃線可以開頭__)、變數不能帶有特殊符號(下劃線_可以)、變數名稱區分大小寫、(if、else、elif這些特殊關鍵字不能作為變數名稱使用)

  2. 關鍵字和內建函式不能作為變數:

    import keyword 輸出不能作為變數名的關鍵字
    在這里插入圖片描述內建函式不能作為變數名使用,變數名一般是黑色:help(type)可以查看內建函式或者在python幫助手冊里輸入built-in function查看所有內建函式
    在這里插入圖片描述

  3. 腳標取值的常用形式

name = "my name is wahaha"
print(name[開始腳標:結束腳標])
print(name[正數]):	從左往右索引值分別為0,1,2,3,4,5...16,超出報錯

print(name[負數]):	從右往左索引值分別為-1,-2,-3,-4...-17,超出報錯

print(name[0]):	輸出m,第一個字串索引值為0

print(name[-1]):	輸出a,最后一個字串

print(name[1:4]):	輸出y n,不輸出結束腳標4的索引值

print(name[:11]):	輸出my name is ,輸出往前所有資料,不輸出結束腳標11的值

print(name[11:]):	輸出wahaha,輸出往后所有資料,包括開始腳標

三、Python資料結構(串列、字典、元祖、集合):

  1. 串列的應用

1.串列中的每一個元素都是可變的;
2.串列中的元素是有序的,也就是說每一個元素都有一 個位置;
3.串列可以容納Python中的任何物件

串列 ( list )    c = [ val1,val2,val3]  串列可以容納ython的任何物件
all_in_list=[
	1,				整型
	1.0,			浮點型
	"a word",		字串
	print(1),		函式
	True,			布林值
	[1,2],			串列套串列
	(1,2),			元祖
	{"key":"val"}]	字典


串列的增刪改查:insert():插入  remove():洗掉  alist[]=""、del:修改
查看
alist = [1,2,3,4]
print(alist[1:3])		#輸出[2,3]按索引值查看單個或多個資料

增加
insert(索引值,插入資料)應用:  按串列索引值插入,索引值存在則在索引值前增加資料,索引值不存在則往后添加一個新資料(反向索引則往前添加)
alist = [1,2,3,4]		#正向索引值1 >>0  反向索引值1 >>-4
alist.insert(2,8)
print(alist)		#輸出[1,2,8,3,4,]  


洗掉
remove(洗掉的資料): 直接remove(資料)需要洗掉的資料
alist = [1,2,'3',4]
alist.remove('3')
print(alist)		#輸出[1,2,4] 想刪啥刪啥

del alist[]:	按索引值進行洗掉
alist = [1,2,3,4]
del alist[0:3]
print(alist)	#輸出[4]  相當于洗掉選中索引值的資料,索引值不存在就不會洗掉


修改
alist[索引值]="修改的資料"
alist = [1,2,3,4]		#正向索引值1 >>0  反向索引值1 >>-4
alist[1]=8
print(alist)		#輸出[1,8,3,4,] 按索引值修改,相當于修改2為8
alist[0:3]=8
print(alist)		#輸出[8,4]	按索引值區間修改,相當于把修改的資料,放入所索引值資料區間內,即便是修改的資料有很多條

串列的索引值取值實體圖片
在這里插入圖片描述

串列的實際應用實體圖片
在這里插入圖片描述
2. 字典的應用

1.字典中資料必須鍵值對的形式出現,且鍵只能為字串、數字、浮點型別
2.邏輯上,鍵是不可重復,鍵重復以該變數索引值末尾的鍵值對為準輸出,而值可以重復
3.鍵是不可修改變換的,但是值可以修改變換(可以是任何物件)

字典的增刪改查
查看
指定鍵查看值
adict = {"a":"123","b":"456","c":"789"}
print(adict["a"])		#輸出123   指定鍵取值


增加
update()方法:  往字典內添加多條資料
adict = {"a":"123","b":"456"}
adict.update({"c":"789","d":"999"})	#不要忘了寫大括號
print(adict)		#輸出{'a': '123', 'b': '456', 'c': '789', 'd': '999'} 


洗掉
del adict(需要洗掉的鍵): 指定鍵洗掉的鍵
adict = {"a":"123","b":"456","c":"789"}
del adict['a']		#[]中括號里的鍵如果是字串必須加引號,其他型別的加不加都行
print(adict)		#輸出{'b': '456', 'c': '789'}


修改
通過指定鍵修改值的形式修改
adict = {"a":"123","b":"456","c":"789"}
adict["a"] = 456    #修改為數字型456,[]中括號里的鍵如果是字串必須加引號,其他型別的加不加都行
print(adict)		#輸出'a': 456, 'b': '456', 'c': '789'}   

字典通過鍵取值實體圖片
在這里插入圖片描述
字典不能通過值取鍵實體圖片
在這里插入圖片描述
通過字典鍵值對的特殊性,解決賬號登陸時,串列中密碼不對應賬戶的問題實體圖片
在這里插入圖片描述

  1. 元祖的應用

元祖可以理解成穩固版的串列,因為元祖是不可修改的,增刪改都不可以, 但是元祖可以按索引值查看資料,查看方式和串列相同

查看
atuple = ("opo","12",1,1.036,8,3)
print(atuple[0:3])		#輸出('opo', '12', 1)
  1. 集合的應用

每一個集合的元素都是無序、不重復的任意物件,可以通過集合去判斷資料的從屬關系, 還可以通過集合把資料結構中重復的元素洗掉,集合里邊不能放集合、字典、串列,但可以放元祖

增加
add()方法:	去增加一個字串、數字、浮點或元祖型別的資料
aset = {1,"a",2,2,"2",1.02,"2"}
aset.add(("qq","ww"))
print(aset)		#輸出{1, 2, 1.02, ('qq', 'ww'), 'a', '2'},因為是無序的


洗掉
把集合中重復的資料洗掉
aset = {1,"a",2,2,"2",1.02,"2"}
print(aset)			#輸出{1, 2, 1.02, 'a', '2'},里面重復的內容會去掉整合成一個新集合

discard(洗掉的值)方法: 指定值洗掉某條值資料
aset = {1,2,3,4,5}
aset.discard(5)
print(aset)		#輸出{1, 2, 3, 4},指定5洗掉掉

  1. 資料結構技巧

sorted()方法:會將串列中同型別的每個元素按長短、大小、字母順序排序,不改變串列內容
注意:當串列存在不同型別時用此方法會報錯(不適用于不同型別的串列)

alist = ["7","6","5","4","Ba","Bb","bA","aA","3","2","1"]
print(sorted(alist))	#輸出['1', '2', '3', '4', '5', '6', '7', 'Ba', 'Bb', 'aA', 'bA']

zip() 方法:會將兩個以上的串列進行對應,就可以用此方法操作
注意:當兩個串列元素數量不等時,以元素數量少的串列為準相對應

alist = [7,6,5,4,3,2,1]
blist = ["Ba","Bb","bA","aA","3","2","1"]

a_list = sorted(alist)			#對串列alistj進行順序排序
b_list = sorted(blist)			#對串列blistj進行順序排序
print(a_list)		#輸出[1, 2, 3, 4, 5, 6, 7]
print(b_list)		#輸出['1', '2', '3', 'Ba', 'Bb', 'aA', 'bA']
for a,b in zip(a_list,b_list):			#a >>a_list  b >>b_list,相當于for回圈每次回圈會安排序取出一條資料進行輸出

    print(a,"is",b)		#這個子陳述句需要縮進,若不縮進會報錯
#輸出
1 is 1
2 is 2
3 is 3
4 is Ba
5 is Bb
6 is aA
7 is bA

sorted()zip()方法實體圖片

在這里插入圖片描述

enumerate()函式的運用

默認情況下回圈串列獲取元素索引值:
a = ["a","b","c","d"]
for num,a in enumerate(a):		#num的值對應索引值,默認為0,相當于enumerate(a)=[0>"a",1>"b",2>"c",3>"d"]相對應
         print(a,"is",num)		#所以fo回圈中 num對應的是索引值0,a對應的是串列中元素
         #輸出:
         a is 0
		 b is 1
		 c is 2
		 d is 3


修改索引值情況下回圈串列獲取元素索引值:
a = ["a","b","c","d"]
for num,a in enumerate(a,10):	#num的值對應索引值,默認為0,相當于enumerate(a)=[10>"a",11>"b",12>"c",13>"d"]相對應
         print(a,"is",num)		#所以fo回圈中 num對應的是索引值0,a對應的是串列中元素
         #輸出
         a is 10
		 b is 11
		 c is 12
		 d is 13

enumerate()函式獲取元素串列索引值用法實體圖片
在這里插入圖片描述

6. **查看型別的屬性與幫助內容**

可以通過某些特殊內建函式去查看模塊或者函式方法的幫助資訊
help():查看型別、模塊幫助資訊,查看的資訊全面
type():查看型別,丟進去一個模塊或方法
dir(): 查看型別的屬性和函式方法,

random模塊為例,查看型別的屬性與幫助內容實體圖片
在這里插入圖片描述

四、python推導式的運用

  1. python之串列推導式的運用:

首先得知道randge()函式的運用:
range(a,b,c)
a:計數從a開始,默認為0,當range(5),相當于range(0,5)
b:計數到b結束,但不包括5,當range(0,5),輸出的是[0,1,2,3,4]
c:步長值,默認為1,相當每隔一個取一個,當range[0,8,2],輸出的是[0,2,4,6]

append() 方法用于在串列末尾添加新的物件,

range()函式的運用,python之串列推導式運用

python之串列推導式普通寫法:
添加了步長值的用法
a = []
for i in range(1,8,2):			#print(a)在for回圈外的用法:每隔兩位取值進入for回圈,相當于每次for回圈從range()中按步長值取出數字,回傳給a串列,當回圈完成后,輸出的就是range(1,8)中取出來的所有值的a串列
         a.append(i)	#append()方法相當于給a串列添加新資料
print(a)				#輸出的是[1, 3, 5, 7]	


print(a)在for回圈外的用法:
a = []
for i in range(1,8):	#print(a)在for回圈外的用法:相當于每次for回圈從range()中值取出數字,回傳給a串列,當回圈完成后,輸出的就是range(1,8)中取出來的所有值的a串列
         a.append(i)
print(a)  			#輸出的是[1, 2, 3, 4, 5, 6, 7],如果是range(8)輸出的是[0, 1, 2, 3, 4, 5, 6, 7]


print(a)在for回圈內的用法:
a = []					
for i in range(1,8):	#print(a)在for回圈內的用法,相當于每次for回圈從range(1,8)中取出數字,依次將range(1,8)取出來的值放入a串列中,每次a串列的值會從原來的基礎上增加一個值,每一次回圈輸出一次a串列
         a.append(i)
         print(a)
         #輸出
         [1]
		 [1, 2]
		 [1, 2, 3]
		 [1, 2, 3, 4]
		 [1, 2, 3, 4, 5]
		 [1, 2, 3, 4, 5, 6]
		 [1, 2, 3, 4, 5, 6, 7]




python之串列推導式決議式:
b = [i for i in range(1,8)]        #for i rang(1,8)將[1,2,3,4,5,6,7]的值傳給了i,i再將值傳遞給for前面的i,注意:兩個i的變數必須相同,相當于定義了for前邊的i                                            
print(b) 		#輸出的是[1, 2, 3, 4, 5, 6, 7]

python之串列推導式實體圖片:range()函式用法

在這里插入圖片描述

enumerate()函式:回圈串列時獲取元素的索引值(也可以自己指定索引值)
enumerate(list,b)
list: 串列
b: 默認從0開始取,但是可以指定索引值從第幾個去

  1. python之字典推導式

字典推導式的運用

adict = {i:i+1 for i in range(1,6)}	   #for回圈將得到的資料傳給i ,i再將得到的資料傳for前面的i:i+1

print(adict)		#輸出{1: 2, 2: 3, 3: 4, 4: 5, 5: 6}


理解下面這個for回圈就好理解上面字典推導式了:
adict = {}			
for i in range(1,6):
	adict.update({i:i+1})	#{}大括號不要忘記,相當for回圈將range(1,6)得到的資料放入adict字典中
print(adict)		#輸出{1: 2, 2: 3, 3: 4, 4: 5, 5: 6}

python之字典推導式實體圖片

在這里插入圖片描述

五、if 條件判斷陳述句:

  1. if 條件:
    子陳述句(子陳述句一定要有4個空格縮進)

    在這里插入圖片描述

  2. if 條件 (多個條件可以在if后面加 and password ==“123”:) 子陳述句(子陳述句一定要有4個空格條件成立執行)
    else: 子陳述句(條件不成立執行)

在這里插入圖片描述

  1. 多分支條件陳述句

在這里插入圖片描述

六、回圈陳述句

while回圈 、for回圈
  1. 利用回圈制作小游戲

猜一次:小游戲,看看能否猜中隨機值

if回圈去做這個小游戲在這里插入圖片描述

猜十次:小游戲,看看能否猜中隨機值

  1. while回圈:根據條件進行回圈(條件滿足跑到死馬)

while回圈作弊,可以容錯十次(缺點:你得玩十次,猜對了還得往下猜)

在這里插入圖片描述

break:猜中了立即跳出回圈:
作弊手段智能化,猜對了就不用再假惺惺去猜了,直接跳回圈

在這里插入圖片描述
break的應用:終極關閉程式

終止實體代碼:

while True:
    num=int(input('請輸入數字'))
    if num<50:
        print('數字小于50,繼續判斷他是不是小于0')
        if num<0:
            print('數字小于0')
            break
    elif num>50:
        print('數字大于50,繼續判斷他是不是大于100')
        if num>100:
            print('數字大于100')
            break

管你break在第幾層,只要運行break這個回圈得停止
在這里插入圖片描述

continue:結束此次回圈,重新開始回圈
continue被運行了,它下面代碼不再執行,重新開始回圈,知道這個while回圈條件不在滿足

在這里插入圖片描述

  1. for回圈:根據變數賦值的次數進行回圈

字串串列元組字典for回圈中依次取值實體圖片
在這里插入圖片描述
range()函式在for回圈中依次回圈取值示例圖片
在這里插入圖片描述
利用for回圈將串列的值取出來并進行首尾去除特殊符號實體圖片
在這里插入圖片描述

七、檔案物件的讀取

f=open("E:\\aaaa\\a.txt","rb")    open("讀取檔案的絕對路徑""rb")r為讀 b為二進制,以二進制的方式
									去讀取a.txt的內容,然后將內容賦值給變數f
print(f.read())		列印f.read()讀取a.txt的內容       
f.close				關閉記憶體
f.seek(0,0)			讀取游標移會初始位置    
f.readline() 		按行讀取                       
f.readlines() 		以串列的方式讀取

在cmd默認登陸目錄(Windows登陸時的home目錄)中建立一個名叫test.txt的檔案寫入內容
在這里插入圖片描述

  1. 第一步:建立檔案物件(打開冰箱門)
    在這里插入圖片描述
  2. 第二步:讀取檔案(把大象拿出來)
    read函式讀取檔案
    初次讀取
    在這里插入圖片描述
    第二次讀取需要:f.seek(0,0) 將游標移回起始位置,再次f.read()就可以讀取內容了
    在這里插入圖片描述
    f.readline() 按行讀取 f.readlines() 以串列的方式讀取
    在這里插入圖片描述
  3. 第三步:關閉檔案(關上冰箱門)
    f.close() 函式 因為前面open() 它是占用了記憶體的,不關閉記憶體不會釋放,影響運行

知識斷點:判斷a.txt里英文文章中單詞出現的次數

代碼:

目的:判斷a.txt里英文文章中單詞出現的次數
下面函式的方法:
strip():可以指定字符去除字串的首尾字符
string.punctuation:鍵盤上的各種特殊字符
lower():將大寫變成小寫
split():指定分隔符分割字串,默認以空為分隔符
count():統計某字符在在字串里出現的次數

import string
path = "C:\\Users\\Administrator\\Desktop\\a.txt"

with open(path,"r",encoding="UTF-8") as text:
         #利用 with as 陳述句以讀取的方式打開path檔案,等于 text = open(path,"r",encoding="UTF-8")
         #并設定編碼為utf-8,不然可能會報錯


         words_list = [words.strip(string.punctuation).lower() for words in text.read().split()]
         #通過串列推導式將text的內容讀取并分割成多個字串,并通過for回圈放入words中
         #words將被傳送到for前面的words中進行首尾去除特殊符號并且全部換成小寫
         #最后,處理干凈的多個單詞串列賦值給words_list

         
         words_index = set(words_list)           #將串列轉換成集合(因為下面得字典推導式需要用到大括號)
                                                               #為啥不轉換成字典?因為字典的鍵值對,你得先有值啊!

         count_dict = {index:words_list.count(index) for index in words_index}           
         #轉換成字典有利于查看單詞與單詞出現的次數
         #將集合里的單詞們賦值給index
         #利用count()函式統計words_list串列里單詞出現的次數,即單詞:單詞次數


         for word in sorted(count_dict,key=lambda x:count_dict[x],reverse=False):
                  ##對count_dict進行排序
                  #key = lamdba x:count_list[x],這里意思是以字典的值作為排序標準
                  #reverse中True是降序,Flase是升序(默認)
                  
                  print("{}--{}times".format(word,count_dict[word]))
                  #format()格式化函式

判斷a.txt里英文文章中單詞出現的次數實體圖片
在這里插入圖片描述

八、檔案物件寫入

實作拷貝檔案,打開兩個檔案,一個用讀的形式打開需要拷貝的檔案,另一個用寫的方式打開需要生成的檔案,把讀取檔案交給寫入的檔案,最后關閉兩個檔案

往a.txt檔案寫like,(a.txt存在會替換里面內容,不存在會創建一個a.txt)

f=open("E:\\aaaa\\1.txt","wb")      以寫的方式打開a.txt
f.writelines([b"li",b"ke"])  		寫入內容
f.close()							關閉
將a.txt的內容復制到b.txt,b.txt不存在則創建一個b.txt,存在則替換內容

rf = open("E:\\aaaa\\a.txt","rb")   以讀取方式打開,賦值rf
wf = open("E:\\bbbb\\b.txt","wb")	以寫入方式打開,賦值wf,創建-替換

data = rf.read()	rf呼叫read()函讀取a.txt內容然后賦值data						
wf.write(data)		wf呼叫write()函式將data內容寫入到b.txt里(因為打開方式是寫入)	

rf.close()	關閉
wf.close()	關閉
當限制讀取資料是可以利用回圈一點點讀取

rf = open("E:\\aaaa\\a.txt","rb")		以讀取方式打開,賦值rf
wf = open("E:\\bbbb\\b.txt","wb")		以寫入方式打開,賦值wf,創建-替換

while True:  						死回圈				
         data = rf.read(110)		每次讀取110位元組數     
         if data == b"":			當data讀取到空即讀取完,就break跳出死回圈
                  break
         wf.write(data)				每次回圈都往b.txt里拼接內容

rf.close()	關閉
wf.close()	關閉
  1. 第一步:打開檔案(開冰箱)
    在用戶家目錄中建立一個tsetone.txt的檔案寫入三行內容

在這里插入圖片描述
2. 第二步:寫入檔案內容(放大象)

拷貝一個檔案,將testone.txt檔案的內容拷貝成testtow.txt(one的內容不能變化洗掉,而是產生一個新的tow檔案)
在這里插入圖片描述
通過檔案物件cmd.exe對命令工具做復制

在這里插入圖片描述

  1. 保存檔案(關冰箱門)
    f.close() 函式 因為前面open() 它是占用了記憶體的,不關閉記憶體不會釋放,影響運行

九、函式和模塊的定義

取隨機值:

import random   #呼叫模塊  從此檔案呼叫模塊c:\users\administrator\appdata\local\programs\python\python37\lib\random.py  
alist= ["tom","timi","niko"]      #賦值
print(alist[random.randint(1,2)])      #根據索引值隨機列印出變數alist的內容,需要根據alist的資料來指定,不然會報錯
print(random.choice(alist))  #不用指定alist的資料就可以隨機取值

在這里插入圖片描述

  1. 創建模塊
該模塊可以被呼叫 ( 用import呼叫)
在模塊中包含一個功能模塊,函式的作用是回傳20個星號
1·定義的模塊名稱不能以數字開頭
2·不能和默認的模塊重名
注意:呼叫方法函式必須有一個變數去接受方法函式的回傳值,然后輸出這個變數得到的就是回傳的內容

在這里插入圖片描述

  1. 呼叫創建的模塊
    呼叫模塊和列印模塊必須在同一個目錄或者呼叫模塊在此檔案中(c:\users\administrator\appdata\local\programs\python\python37\lib\random.py )
    在這里插入圖片描述

十、函式的形參實參與例外捕獲

  1. 函式的形參和實參
函式的形參:在定義函式的時候,給定函形參變數,然后傳參的時候傳上兩個變數去對應,那么形參變數就變為上傳的變數匯入函式中,
如:
def division (a,b)     # a和b是給定的變數形參
    num = a / b
    return num
numa = 20
numb = 5
endnum = division(numa,numb)  # 上傳到函式里面取代 a,b   
print(endnum)   
函式的實參:就是在定義函式的時候給了一個指定的值,比如def division(1,2) 就是實參
  1. 函式的例外捕獲(找bug)
函式的例外捕獲:預判代碼某個位置可能會報錯,提前將這個報錯屏蔽,然后由開發者去進行提示
try (被捕獲的子陳述句)可能出現運行錯誤的陳述句: 利用這個關鍵字去捕獲例外
except (例外型別1,例外型別2,...)報錯資訊: 關鍵字除非,意思是如果出現這個報錯將由它列印出例外的提示資訊,更為友好直觀
小技巧:expcept:不捕獲例外型別資訊也是可以的

當代碼運行出現例外,用try捕獲代碼,然后用except提示友好的例外資訊或者直接pass退出
在這里插入圖片描述
例外捕獲小技巧:
在這里插入圖片描述

十一、面向物件編程

面向物件編程相對應的是面向程序編程(順序,按順序運行)

在這里插入圖片描述

  1. 類 class
    生物 >>動物 >>靈長類動物 >>人類 >> 男人 >>老人…(無限套娃,萬物皆可為類)
 當定義一個類的時候,系統會開辟一個記憶體空間,里面存盤屬性和方法
 類的命名規則:大小駝峰命名法 兩個單詞首字母大寫   兩個單詞首字符大寫
 屬性:由變陣列成
 方法:由函陣列成,實作功能,函式(self)括號內必須寫self
 創建物件:就是使用一個類,將類實體化,同一個類可以創建多個物件,類相當于模板
 魔術方法:雙下劃線(__init__初始化方法),滿足即呼叫
  1. self 的運用,代表實體化物件本身

在這里插入圖片描述
將更多需要設定修改的東西放入類中在這里插入圖片描述
python之%s、%d、%f的用法

%s字串     %d數字      %f浮點數 

十二、爬蟲獲取網頁圖片

  1. python正則運算式
    正則使用最多的是findall函式:
 單個字串匹配:
.     匹配單個任意字符   
[]    寫在中括號里面的內容會被逐一單個匹配
\d    匹配單個數字
\w    匹配  [0-9a-zA*Z_]
\s    匹配空白字符  空格 tab鍵

在這里插入圖片描述

多個字串匹配:
直接匹配  字串
|: 分隔符應用 匹配兩個不同的字串  字串|字串
*: 匹配左鄰字符出現0次或者多次
+:左鄰字符出現一次或者多次
?:左鄰字符出現0次或者1次
{2.4}:定義左鄰字符出現次數  2-3此次都會匹配
^:是否以某字串開頭
$:是否以某字串結尾
():分組保存  \數字

正則運算式分組保存,參考:https://www.cnblogs.com/erichuo/p/7909180.html

正則運算式中,group()用來提出分組截獲的字串,()用來分組

import re
a = "123abc456"
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0)   #123abc456,回傳整體
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1)   #123
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2)   #abc
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3)   #456

在這里插入圖片描述

  1. 需要使用python中的urllib庫爬取網頁圖片
第一步:獲取網頁的html代碼
第二步:偽造一個user_agent頭,不能會被封ip
第三步:通過正則運算式過濾出圖片資訊

第一步:獲取網頁的源代碼:

   import urllib.request:		通過request模擬瀏覽器發送請求
				 __init_:		初始化方法,即實體化物件時就使用這個方法給物件配置基本功能
urllib.request.urlopen():		指定一個url,默認以GET方式發送請求
				  read():		讀取內容
	 		 add_hearder:		偽造一個user-agent

在這里插入圖片描述

第二步:偽造user-agent

在這里插入圖片描述
第三步:利用正則過濾圖片資訊并把圖片下載下來

在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/4818.html

標籤:其他

上一篇:Python資料可視化 關于cmap顏色函式的試驗

下一篇:python-酷我音樂(爬蟲)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more