一秩仆、python與網(wǎng)絡(luò)爬蟲
網(wǎng)絡(luò)爬蟲
它是指著一類程序——自動(dòng)連接到互聯(lián)網(wǎng)站點(diǎn)坏快,并讀取網(wǎng)頁(yè)中的內(nèi)容或者存放在網(wǎng)絡(luò)上的各種信息辽幌,并按照某種策略對(duì)目標(biāo)信息進(jìn)行采集(如對(duì)某個(gè)網(wǎng)站的全部頁(yè)面進(jìn)行讀认驳隆)
python語(yǔ)言
python的發(fā)展歷程
- Guido van Rossum在1989年開發(fā)了python語(yǔ)言,他從高級(jí)數(shù)學(xué)語(yǔ)言ABC汲取了大量語(yǔ)法怀各,并從系統(tǒng)編程語(yǔ)言Modula-3借鑒了錯(cuò)誤處理機(jī)制,將其命名為python(大蟒蛇)术浪。
- python是一種解釋型瓢对、面對(duì)對(duì)象、動(dòng)態(tài)數(shù)據(jù)類型的高級(jí)程序設(shè)計(jì)語(yǔ)言胰苏。python開源硕蛹,遵循GPL(GNU General Public License)協(xié)議,對(duì)所有開發(fā)者完全開放,免費(fèi)法焰。
python主要數(shù)據(jù)類型
- Number秧荆,數(shù)值類型“R牵可以使Integers(如1和2)乙濒、Float(如1.1和1.2)、Fractions(如1/2和1/3)卵蛉,或者是Complex Number(數(shù)學(xué)里的復(fù)數(shù))
- String,字符串颁股,主要用于描述文本
- List,列表傻丝,一個(gè)包含元素的序列
- Tuple甘有,元祖,和列表類似桑滩,但其實(shí)不可變的
- Set梧疲,一個(gè)包含元素的集合,其中的元素是無(wú)序的
- Dict运准,字典幌氮,由一些鍵值對(duì)構(gòu)成
- Booleam,布爾類型胁澳,其值或?yàn)門ure或False
- Byte该互,字節(jié),例如一個(gè)以字節(jié)流動(dòng)的jpg文件
python基本語(yǔ)法
- //表示整除
- **表示冪次
- 使用type關(guān)鍵字獲取某個(gè)數(shù)據(jù)的類型
例如:
print(type(1)) # <classs 'int'>
-
分?jǐn)?shù)運(yùn)算
import fractions # 導(dǎo)入分?jǐn)?shù)模塊 a=fractions.Fraction(1,2) b=fractions.Fraction(1,3) print(a+b) # 輸出5/6
復(fù)數(shù)運(yùn)算
復(fù)數(shù)可以使用complex(real,imag)或者帶有后綴“j”的浮點(diǎn)數(shù)來(lái)創(chuàng)建
a=complex(1,2)
b=2+3j
print(type(a),type(b)) # <class'complex'><class'complex'>
print(a+b) # (3+5j)
print(a*b) #(-4+7j)
- 布爾類型
python中的布爾類型只有True和False兩個(gè)常量為值
print(1<2) #True
print(1>2) #False
- 列表(list)
對(duì)于列表而言韭畸,序列中的每一個(gè)元素都在一個(gè)固定的位置(稱為索引)宇智,索引從“0”開始。列表中的元素可以是任何數(shù)據(jù)類型胰丁,python中的列表對(duì)應(yīng)形式是“【】”(有點(diǎn)類似于C語(yǔ)言中的數(shù)組)
l1=[1,2,3,4]
print(l1[0]) #通過(guò)索引訪問(wèn)元素随橘,輸出“1”
print(l1[1]) #輸出“2”
print(l1[-1]) #使用負(fù)索引值可從列表的尾部向前訪問(wèn)元素
# 任何非空列表的最后一個(gè)元素總是list【-1】
列表切片(slice):從列表中提取部分元素的操作,返回值是一個(gè)新列表锦庸。
l1=[i for i in range(20)] #列表解析語(yǔ)句
#l1中的元素為從0到20(不含20)的所有整數(shù)
print(l1)
print(l1[0:5]) #l1的前五個(gè)元素
print(l1[15:-1]) #取索引為15的元素到最后一個(gè)元素
print(l1[:5]) #取前五個(gè)机蔗,"0"可以省略
# 如果左切片索引為零,可以將其留空而將零省去甘萧,如果右切片索引為列表的長(zhǎng)度萝嘁,也可以將其留空
l2=l1[:] #取所有元素,其實(shí)就是復(fù)制列表
print(l1[::2]) #指定步數(shù)扬卷,取所有偶數(shù)索引
print(l1[::-1]) #倒著取所有元素
列表中添加新元素的方法
l1=['a']
l1=l1+['b']
print(l1) # ['a','b']
l1.append('c')
l1.insert(0,'x')
l1.insert(len(l1),'y')
print(l1) #['x', 'a', 'b', 'c', 'y']
l1.extend(['d','e'])
print(l1) #['x', 'a', 'b', 'c', 'y', 'd', 'e']
l1.append(['f','g'])
print(l1) # ['x', 'a', 'b', 'c', 'y', 'd', 'e', ['f', 'g']]
extend()接受一個(gè)列表牙言,并把其元素添加到原有的列表中類似擴(kuò)展的意思。append()把參數(shù)(參數(shù)可能是一個(gè)列表)作為一個(gè)元素添加到原有的列表中怪得,類似于一個(gè)列表中插入另一個(gè)列表咱枉。insert()將單個(gè)元素插入到列表中卑硫,其第一個(gè)參數(shù)是列表插入的位置(索引), 指定位置的插入元素
從類表中刪除元素
del l1[0] #根據(jù)索引指定列表中的一個(gè)元素刪除
print(l1)
#['a', 'b', 'c', 'y', 'd', 'e', ['f', 'g']]
l1.remove('a') #根據(jù)元素刪除庞钢, remove()的方法接受一個(gè)value參數(shù)拔恰,并刪除列表中第一次出現(xiàn)的該值
print(l1)
# ['b', 'c', 'y', 'd', 'e', ['f', 'g']]
l1.pop(0) # 接受一個(gè)特定的索引值進(jìn)行刪除
# ['c', 'y', 'd', 'e', ['f', 'g']]
元祖(tuple)
元祖與列表非常相似,最大的區(qū)別在于:
- 元祖是不可修改的定義之后就固定了
- 元祖在形式上使用“()”
元祖操作與列表類似:
t1 = (1,2,3,4,5)
print(t1[0]) # 1
print(t1[::-1]) # (5, 4, 3, 2, 1)
print(1 in t1) # 檢查“1”是否在t1中基括,輸出:True
print(t1.index(5)) #返回某個(gè)值所對(duì)應(yīng)的元素索引颜懊,輸出:4
注:元素不可修改是元祖和列表的最大(或者說(shuō)唯一)的區(qū)別,除此之外风皿,列表中修改元素的操作也適用于元祖河爹。
字符串(string)與運(yùn)用方法
str1 = 'abcd'
print(str1[0]) # a
print(str1[:2]) # ab
str1=str1+ 'efg'
print(str1) # abcdefg
str1 = str1 + 'xyz'*2
print(str1) # abcdefgxyzxyz
# 格式化字符串
print('{} is a kind of {}.'.format('cat','mammal'))
# cat is a kind of mammal
# 顯式指定字段
print('{3} is in {2},but {1} is in {0}'.format('china','shanghai','us','newyork'))
# newyork is in us,but shanghai is in china
# 以三個(gè)引號(hào)標(biāo)記多行字符串
long_str ='''I love this girl,
but I don't know if she like me,
what I can do is to keep calm and stay alive.
'''
print(long_str)
集合(set)
無(wú)序且值唯一,創(chuàng)建集合和操作集合的常見方式包括:
set1 = {1, 2, 3}
l1 = [4, 5, 6]
set2 = set(l1)
print(set1) # {1, 2, 3}
print(set2) # {4, 5, 6}
# 添加元素
set1.add(10)
print(set1) # {10,1,2,3}
set1.add(2) # 無(wú)效語(yǔ)句桐款,因?yàn)椤?”在集合中已經(jīng)存在
print(set1) # {10,1,2,3}
set1.update(set2) # 類似list中的extend()操作
print(set1) # {1,2,3,4,5,6,10}
# 刪除元素
set1.discard(4)
print(set1) # {1,2,3,5,6,10}
set1.remove(5)
print(set1) # {1,2,3,6,10}
set1.discard(20) # 無(wú)效語(yǔ)句咸这,不會(huì)報(bào)錯(cuò)
# set1.remove(20): 使用remove()去除一個(gè)并不存在的值時(shí)會(huì)報(bào)錯(cuò)
set1.clear() # 清空集合
print(set1) # set()
set1 = {1, 2, 3, 4}
# 并集、交集與差集
print(set1.union(set2)) # 并集
# {1,2,3,4,5,6}
print(set1.intersection(set2)) # 交集
# {4}
print(set1.symmetric_difference(set2)) # 差集魔眨,只在set1或只在set2的元素
字典(dict)
python中的字典是鍵值對(duì)(key-value)的無(wú)序集合媳维。字典形式上和集合類似,創(chuàng)建字典和操作字典的基本方法如下:
d1 = {'a':1,'b':2} # 使用“{}”創(chuàng)建
d2 = dict([['apple','fruit'],['lion','animal']]) # 使用diat關(guān)鍵字創(chuàng)建
d3 = dict(name = 'Paris',status = 'alive',location = 'ohio')
print(d1) # {'a': 1, 'b': 2}
print(d2) # {'apple': 'fruit', 'lion': 'animal'}
print(d3) # {'name': 'Paris', 'status': 'alive', 'location': 'ohio'}
# 訪問(wèn)元素
print(d1['a']) #1
print(d3.get('name')) #Paris
# 使用get方法獲取不存在的鍵值時(shí)不會(huì)觸發(fā)異常
# 修改字典-添加或更新鍵值對(duì)
d1['c'] = 3
print(d1) #{'a': 1, 'b': 2, 'c': 3}
d1['c'] = -3
print(d1) # {'a': 1, 'b': 2, 'c': -3}
d3.update(name = 'Jarvis',location = 'Virginia')
print(d3) # {'name': 'Jarvis', 'status': 'alive', 'location': 'Virginia'}
# 修改字典-刪除鍵值對(duì)
del d1['b']
print(d1) # {'a': 1, 'c': -3}
d1.pop('c')
print(d1) # {'a': 1}
# 獲取keys或values
print(d3.keys()) # dict_keys(['name', 'status', 'location'])
print(d3.values()) # dict_values(['Jarvis', 'alive', 'Virginia'])
for k,v in d3.items():
print('{}:\t{}'.format(k,v))
# name: Jarvis
# status: alive
# location: Virginia
邏輯語(yǔ)句
python中表示程序結(jié)構(gòu)的語(yǔ)句不需要用括號(hào)括起來(lái)(比如“{}”)遏暴,而是一個(gè)冒號(hào)結(jié)尾侄刽,以縮進(jìn)為語(yǔ)句塊。if朋凉,else州丹,elif關(guān)鍵詞是條件選擇語(yǔ)句的關(guān)鍵:
a = 1
if a>0:
print('Positive')
else:
print('Negetive')
# 輸出:Positive
b = 2
if b < 0:
print('b is less than zero')
elif b < 3:
print('b is not less than zero but less than three')
elif b < 5:
print('b is not less than three but less than five')
else:
print('b is equal to or greater than five')
# 輸出:b is not less than zero but less than three