使用Python的scrapy框架進(jìn)行爬蟲(chóng)(1)

Python中的列表

列表和C語(yǔ)言中的數(shù)組很像未斑,但列表的功能更強(qiáng)大虹统,可以存儲(chǔ)不同類型的數(shù)據(jù)
列表是Python中內(nèi)置有序可變序列染簇,列表的所有元素放在一對(duì)中括號(hào)“[]”中对室,并使用逗號(hào)分隔開(kāi)模燥;
一個(gè)列表中的數(shù)據(jù)類型可以各不相同咖祭,可以同時(shí)分別為整數(shù)、實(shí)數(shù)蔫骂、字符串等基本類型么翰,甚至是列表、字典以及其他自定義類型的對(duì)象纠吴。

weapon_list = ['98k', 'M4A1', 'SCAR', 'AWM']
print(weapon_list)
# 訪問(wèn)其中的元素硬鞍,使用索引的形式,索引是從零開(kāi)始
print(weapon_list[3])

列表元素的增加append()
向列表尾部追加一個(gè)元素戴已,不改變其內(nèi)存首地址,屬于原地操作锅减。
例如:

weapon_list = ['98k', 'M4A1', 'SCAR', 'AWM']
print('列表添加前', weapon_list)
weapon_list.append('MP5')
print('列表添加后', weapon_list)

列表添加后 ['98k', 'M4A1', 'SCAR', 'AWM', 'MP5']

刪除列表中的指定位置上的元素, 可以使用del關(guān)鍵字

del weapon_list[0]
print('列表刪除后', weapon_list)

測(cè)試列表中是否存在某元素 in

print('AWM' in weapon_list)
# True

len()

返回列表中的元素個(gè)數(shù)糖儡,同樣適用于元組、字典怔匣、集合握联、字符串等

print(len(weapon_list))

遍歷列表的三種方式

a = ['a','b','c','d','e','f']
for i in a:
    print(i)

for i in range(len(a)):
    print(i,a[i])
for i,ele in enumerate(a):
    print(i,ele)

列表推導(dǎo)式

列表推導(dǎo)式使用非常簡(jiǎn)潔的方式來(lái)快速生成滿足特定需求的列表,代碼具有非常強(qiáng)的可讀性每瞒。

語(yǔ)法形式:[表達(dá)式 for 變量 in 序列或迭代對(duì)象]

列表推導(dǎo)式在邏輯上相當(dāng)于一個(gè)循環(huán)金闽,只是形式更加簡(jiǎn)潔。

lis = [i for i in range(100)]
print(lis)

使用列表推導(dǎo)式實(shí)現(xiàn)嵌套列表的平鋪

>>> vec = [[1,2,3], [4,5,6], [7,8,9]]

>>> [num for elem in vec for num in elem]

[1, 2, 3, 4, 5, 6, 7, 8, 9]

列表切片

切片操作不是列表特有的剿骨,python中的有序序列都支持切片代芜,如字符串,元組浓利。

切片的返回結(jié)果類型和切片對(duì)象類型一致挤庇,返回的是切片對(duì)象的子序列,如:對(duì)一個(gè)列表切片返回一個(gè)列表贷掖,字符串切片返回字符串嫡秕。

  li=["A","B","C","D"]

格式: li[start : end : step]

start是切片起點(diǎn)索引,end是切片終點(diǎn)索引苹威,但切片結(jié)果不包括終點(diǎn)索引的值昆咽。step是步長(zhǎng)默認(rèn)是1。

t=li[0:3]        ["A","B","C"]        #起點(diǎn)的0索引可以省略牙甫,t=li[:3]

       t=li[2: ]        ["C","D"]           #省略end掷酗,則切到末尾

      t=li[1:3]        ["B","C"]

      t=li[0:4:2]       ["A","C"]       #從li[0]到li[3],設(shè)定步長(zhǎng)為2。

元組

元組屬于不可變序列(元素集合)腹暖,一旦創(chuàng)建汇在,用任何方法都不可以修改其元素。從形式上脏答,元組的所有元素放在一對(duì)圓括號(hào)中糕殉,元素之間用逗號(hào)分隔亩鬼。

>>>x = (1,2,3)                               #直接把元組賦值給一個(gè)變量

>>>x

(1,2,3)

元組與列表的區(qū)別

  • 元組中的數(shù)據(jù)一旦定義就不允許更改。
  • 元組沒(méi)有append()阿蝶、extend()和insert()等方法雳锋,無(wú)法向元組中添加元素。
  • 元組沒(méi)有remove()或pop()方法羡洁,也無(wú)法對(duì)元組元素進(jìn)行del操作玷过,不能從元組中刪除元素。
  • 從效果上看筑煮,tuple( )凍結(jié)列表辛蚊,而list( )融化元組。

元組的優(yōu)點(diǎn)

  • 元組的速度比列表更快真仲。
  • 元組對(duì)不需要改變的數(shù)據(jù)進(jìn)行“寫保護(hù)”將使得代碼更加安全袋马。
  • 元組可用作字典鍵(特別是包含字符串、數(shù)值和其它元組這樣的不可變數(shù)據(jù)的元組)秸应。元組有時(shí)還作為函數(shù)的返回值返回(返回多個(gè)值)

字典

字典定義

字典(dictionary)是包含若干“鍵:值”元素的無(wú)序可變序列虑凛,字典中的每個(gè)元素包含“鍵”和“值”兩部分,定義字典時(shí)软啼,每個(gè)元素的鍵和值用冒號(hào)分隔桑谍,元素之間用逗號(hào)分隔,所有的元素放在一對(duì)大括號(hào)“{}”中祸挪。字典中的鍵可以為任意不可變數(shù)據(jù)锣披,比如整數(shù)、實(shí)數(shù)匕积、字符串盈罐、元組等等。
字典的創(chuàng)建

>>> a_dict = {'server': 'db.neuedu.com', 'database': 'mysql'}

>>> a_dict

{'database': 'mysql', 'server': 'db.neuedu.com'}

>>> x = {}                     #空字典

>>> x

{}

字典元素的讀取

以鍵作為下標(biāo)可以讀取字典元素闪唆,若鍵不存在則拋出異常

aDict = {'name':'趙四', 'sex':'male', 'age':37}
print(aDict['name'])

字典元素的添加和修改

當(dāng)以指定鍵為下標(biāo)為字典賦值時(shí)盅粪,若鍵存在,則可以修改該鍵的值悄蕾;若不存在票顾,則表示添加一個(gè)鍵、值對(duì)帆调。

aDict['addr'] = '象牙山'
print(aDict)
aDict['name'] = '謝廣坤'
print(aDict) # {'name': '謝廣坤', 'sex': 'male', 'age': 37}

字典刪除

  • 使用del刪除整個(gè)字典奠骄,或者字典中的指定元素
  • 使用pop()和popitem()方法彈出并刪除指定元素
  • 使用clear()方法清空字典中所有元素
del aDict['age']
print(aDict)

集合

集合是無(wú)序可變序列,使用一對(duì)大括號(hào)界定番刊,元素不可重復(fù)含鳞,同一個(gè)集合中每個(gè)元素都是唯一的。集合中只能包含數(shù)字芹务、字符串蝉绷、元組等不可變類型的數(shù)據(jù)鸭廷,而不能包含列表、字典熔吗、集合等可變類型的數(shù)據(jù)辆床。
創(chuàng)建一個(gè)集合

a = {3, 5}
type(a)

Python中的函數(shù)

函數(shù)一詞起源于數(shù)學(xué),但是在編程中的函數(shù)和數(shù)學(xué)中的有很大不同桅狠。編程中的函數(shù)式組織好的讼载,可重復(fù)使用的,用于實(shí)現(xiàn)單一功能或相關(guān)聯(lián)功能的代碼塊中跌。


我們?cè)趯W(xué)習(xí)過(guò)程中已經(jīng)使用過(guò)一些python內(nèi)建的函數(shù)咨堤,如print()。但我們也可以自己創(chuàng)建函數(shù)漩符,這被叫做用戶自定義函數(shù)吱型。

使用函數(shù)的好處

  • 避免代碼的冗余
  • 讓程序代碼結(jié)構(gòu)更加清晰
  • 讓代碼具有復(fù)用性,便于維護(hù)

函數(shù)的定義格式

image.png

函數(shù)名的命名規(guī)則:

函數(shù)名必須以下劃線或字母開(kāi)頭陨仅,可以包含任意字母、數(shù)字或下劃線的組合铝侵。不能使用任何的標(biāo)點(diǎn)符號(hào)灼伤; 函數(shù)名是區(qū)分大小寫的。 函數(shù)名不能是保留字




遞歸函數(shù)

斐波那契數(shù)列:

  • 斐波那契數(shù)列(Fibonacci sequence)咪鲜,又稱黃金分割數(shù)列狐赡、因數(shù)學(xué)家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數(shù)列”
  • 指的是這樣一個(gè)數(shù)列:1疟丙、1颖侄、2、3享郊、5览祖、8、13炊琉、21展蒂、34、……在數(shù)學(xué)上苔咪,斐波那契數(shù)列以如下被以遞推的方法定義:F(1)=1锰悼,F(xiàn)(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
  • 在現(xiàn)代物理团赏、準(zhǔn)晶體結(jié)構(gòu)箕般、化學(xué)等領(lǐng)域,斐波納契數(shù)列都有直接的應(yīng)用舔清,為此丝里,美國(guó)數(shù)學(xué)會(huì)從 1963 年起出版了以《斐波納契數(shù)列季刊》為名的一份數(shù)學(xué)雜志曲初,用于專門刊載這方面的研究成果


使用遞歸實(shí)現(xiàn)斐波那契數(shù)列:

使用循環(huán)實(shí)現(xiàn)斐波那契數(shù)列:

Python中的類

面向?qū)ο笞钪匾母拍罹褪穷悾╟lass)和實(shí)例(instance),類是抽象的模板丙者,比如學(xué)生這個(gè)抽象的事物复斥,可以用一個(gè)Student類來(lái)表示。而實(shí)例是根據(jù)類創(chuàng)建出來(lái)的一個(gè)個(gè)具體的“對(duì)象”械媒,每一個(gè)對(duì)象都從類中繼承有相同的方法目锭,但各自的數(shù)據(jù)可能不同

以Student類為例,在Python中纷捞,定義類如下

class Student(object):
    pass
#(Object)表示該類從哪個(gè)類繼承下來(lái)的痢虹,Object類是所有類都會(huì)繼承類。

實(shí)例:定義好了類主儡,就可以通過(guò)Student類創(chuàng)建出Student的實(shí)例奖唯,創(chuàng)建實(shí)例是通過(guò)類名+()實(shí)現(xiàn):

student = Student()

由于類起到模板的作用,因此糜值,可以在創(chuàng)建實(shí)例的時(shí)候丰捷,把我們認(rèn)為必須綁定的屬性強(qiáng)制填寫進(jìn)去。這里就用到Python當(dāng)中的一個(gè)內(nèi)置方法init方法寂汇,例如在Student類時(shí)病往,把name、score等屬性綁上去:

class Student(object):
    def __init__(self, name, score):
        self.name = name
        self.score = score

這里注意:(1)骄瓣、init方法的第一參數(shù)永遠(yuǎn)是self停巷,表示創(chuàng)建的類實(shí)例本身,因此榕栏,在init方法內(nèi)部畔勤,就可以把各種屬性綁定到self,因?yàn)閟elf就指向創(chuàng)建的實(shí)例本身扒磁。(2)庆揪、有了init方法,在創(chuàng)建實(shí)例的時(shí)候渗磅,就不能傳入空的參數(shù)了嚷硫,必須傳入與init方法匹配的參數(shù),但self不需要傳始鱼,Python解釋器會(huì)自己把實(shí)例變量傳進(jìn)去

lass Student(object):
    def __init__(self, name, score):
        self.name = name
        self.score = score
    def print_score(self):
        print("學(xué)生名字是{}, 分?jǐn)?shù)是{}".format(self.name, self.score))


stu = Student('趙四', 88)
stu.print_score()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仔掸,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子医清,更是在濱河造成了極大的恐慌起暮,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異负懦,居然都是意外死亡筒捺,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門纸厉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)系吭,“玉大人,你說(shuō)我怎么就攤上這事颗品】铣撸” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵躯枢,是天一觀的道長(zhǎng)则吟。 經(jīng)常有香客問(wèn)我,道長(zhǎng)锄蹂,這世上最難降的妖魔是什么氓仲? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮得糜,結(jié)果婚禮上敬扛,老公的妹妹穿的比我還像新娘。我一直安慰自己朝抖,他們只是感情好舔哪,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著槽棍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抬驴。 梳的紋絲不亂的頭發(fā)上炼七,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音布持,去河邊找鬼豌拙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛题暖,可吹牛的內(nèi)容都是我干的按傅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼胧卤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼唯绍!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起枝誊,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤况芒,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后叶撒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體绝骚,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡耐版,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了压汪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粪牲。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖止剖,靈堂內(nèi)的尸體忽然破棺而出腺阳,到底是詐尸還是另有隱情,我是刑警寧澤滴须,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布舌狗,位于F島的核電站,受9級(jí)特大地震影響扔水,放射性物質(zhì)發(fā)生泄漏痛侍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一魔市、第九天 我趴在偏房一處隱蔽的房頂上張望主届。 院中可真熱鬧,春花似錦待德、人聲如沸君丁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绘闷。三九已至,卻和暖如春较坛,著一層夾襖步出監(jiān)牢的瞬間印蔗,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工丑勤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留华嘹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓法竞,卻偏偏與公主長(zhǎng)得像耙厚,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子岔霸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容