標籤:
如果你已經掌握了爬蟲基礎,看了我前面三個基礎再來繼續看這一篇文章。
這篇文章主要講解爬蟲程式中必須要用到的python集合,如果你對集合很瞭解。那可以不用看。
在爬蟲程式中,為了不重複爬取已經爬過的頁面,我們需要把已經爬過的頁面的url放進集合中,
在每一次要爬取某一個url之前,先看看集合裡面是否已經存在,如果已經存在跳過這個url,如果不存在
我們把ur放進彙總中,然後再去爬取這個頁面
python提供了set這種資料結構,set是一種無序的,不包含重複元素的結構,一般用來測試是否
已經包含了某元素,或者對眾多元素們去重複。它支援的運算有交、並、差、對稱差。像所有的
容器一樣,set支援的方法有
x in set,len(set),for x in set
作為一個無序的結構,set不會記錄元素的位置,以及元素插入的順序,因此,set不支援一下方法
不支援(index,slice...)
set中的元素是可變的,改變set中元素的操作可以是add()和remove()。他沒有散列值,因此
set不可以被認為是一個字典的key或者自以為其他set的元素
建立一個set可以用set()函數或者花括弧{},但是建立一個空集是不能使用一個花括弧的,只能用
set()函數,因為一個空的花括弧建立的是一個字典資料結構,
先看一些例子吧:
1.1
s1 = {‘girl‘,‘boy‘,‘woman‘,‘man‘,‘older‘,‘child‘,‘man‘}
print(s1)
#結果:
{‘woman‘, ‘boy‘, ‘child‘, ‘man‘, ‘girl‘, ‘older‘}
#通過第一個例子可以看出兩點,第一set可以直接去重,第二set元素是無序的
1.2
s1 = {‘girl‘,‘boy‘,‘woman‘,‘man‘,‘older‘,‘child‘,‘man‘}
print(‘girl在s1中嗎?‘,‘girl‘ in s1)
print(‘girls在s中嗎?‘,‘girls‘ in s1)
#輸出是:
girl在s1中嗎? True
girls在s中嗎? False
1.3
len(s)
s1 = {‘girl‘,‘boy‘,‘woman‘,‘man‘,‘older‘,‘child‘,‘man‘}
print(‘s1有多少元素:‘,len(s1))
輸出的:6
顯然,len計算了去重之後的元素個數
1.4
關於issubset(),和issuperset()方法
s1 = {‘girl‘,‘boy‘,‘woman‘,‘man‘,‘older‘,‘child‘,‘man‘}
s2 = {‘boy‘,‘woman‘}
s3 = {‘boy‘,‘people‘}
print(s2.issubset(s1)) #s2中的元素是否全屬於s1中的元素
print(s3.issubset(s1)) #s3中的元素是否全屬於s1中的元素
print(s1.issuperset(s2)) #s2中的元素是否全屬於s1中的元素
print(s1.issuperset(s3)) #s3中的元素是否全屬於s1中的元素
1.5
s2 = {‘boy‘,‘woman‘}
s3 = {‘boy‘,‘people‘}
s2 |= s3
print(s2) #以上兩句話等同於print(s2.union(s3)),去重
set.union(set1,set2,set3...)方法,或者用 set | set2 | set3 |...
取並集
1.6
s2 = {‘boy‘,‘woman‘}
s3 = {‘boy‘,‘people‘}
s2 &= s3
print(s2) #以上兩句話等同於print(s2.intersection(s3))
set.intersection(set1,set2,set3...),或者用 set & set2 & set3...
取交集
1.7
s2 = {‘boy‘,‘woman‘}
s3 = {‘boy‘,‘people‘}
s2 -= s3
print(s2) #以上兩句話等同於print(s2.difference(s3))
set.difference(set2,set3...),或者用 set - set1 -set2...
存在於set中但是在其他set中不存在元素
1.8
s2 = {‘boy‘,‘woman‘}
s3 = {‘boy‘,‘people‘}
s2 ^= s3
print(s2) #以上兩句話等同於print(s2.symmetric_difference(s3))
返回一個新的set,這個set中存放的是,兩個set中各自專屬的元素
1.9
最後是最基本的增刪改
s1 = {‘girl‘,‘boy‘,‘woman‘,‘man‘,‘older‘,‘child‘,‘man‘}
print(s1)
s1.add(‘hello‘)
print(s1)
s1.remove(‘hello‘)
print(s1)
s1.discard(‘man‘)
print(s1)
s1.pop()
print(s1)
s1.clear()
有了這些基礎,你就可以進入下一界的學習了,下一節將進一步學習python的Regex
鐘志遠 江蘇南京 904727147
python爬蟲(三)--Python的set()