網(wǎng)絡(luò)爬蟲(Web crawler),有時候也叫網(wǎng)絡(luò)蜘蛛(Web spider),是指這樣一類程序——它們可以自動連接到互聯(lián)網(wǎng)站點,并讀取網(wǎng)頁中的內(nèi)容或者存放在網(wǎng)絡(luò)上的各種信息,并按照某種策略對目標(biāo)信息進(jìn)行采集(如對某個網(wǎng)站的全部頁面進(jìn)行讀取)。實際上,世界上最大的網(wǎng)站——Google搜索本身就建構(gòu)在爬蟲技術(shù)之上,像Google、百度這樣的搜索引擎會通過爬蟲程序來不斷更新自身的網(wǎng)站內(nèi)容和對其他網(wǎng)站的網(wǎng)絡(luò)索引。某種意義上說,我們每次通過搜索引擎查詢一個關(guān)鍵詞,就是在搜索引擎服務(wù)者的爬蟲程序所“爬”到的信息中進(jìn)行查詢。當(dāng)然,搜索引擎背后所使用的技術(shù)十分復(fù)雜,其爬蟲技術(shù)通常也不是一般個人所開發(fā)的小型程序所能比擬的,不過,爬蟲程序本身其實并不復(fù)雜,只要懂一點編程知識,了解一點HTTP和HTML,就可以寫出屬于自己的爬蟲,實現(xiàn)很多有意思的功能。
1.1 了解python
Guido van Rossum在1989年發(fā)明了Python,而Python的第一個公開發(fā)行版發(fā)行于1991年。因為Guido是一部電視劇“Monty Python’s Flying Circus”的愛好者,因此將這種新的腳本語言命名為Python。從最根本的角度來說,Python是一種解釋型、面向?qū)ο蟮摹討B(tài)數(shù)據(jù)類型的高級程序設(shè)計語言。注:Python是開源的,源代碼遵循GPL(GNU General Public License)協(xié)議,對所有個人開發(fā)者是完全開發(fā)的。
python的簡明語法和各式各樣的開源庫使得Python在網(wǎng)絡(luò)爬蟲方向得天獨厚,對于個人開發(fā)爬蟲程序而言,一般對于性能的要求不會太高,因此,雖然我們一般認(rèn)為Python在性能上難以與C/C++和Java相比,但總的來說,使用Python有助于更好更快地實現(xiàn)我們所需要的功能。另外,考慮到Python社區(qū)貢獻(xiàn)了很多各有特色的庫,很多都能直接拿來編寫我們的爬蟲程序,因此,Python的確是目前最好的選擇。
1.2 配置開發(fā)環(huán)境
在開始探索Python的世界之前,我們首先需要在自己的機器上安裝Python。值得高興的是,Python不僅免費、開源,而且堅持輕量級,安裝過程并不復(fù)雜。如果使用Linux系統(tǒng),可能已經(jīng)內(nèi)置了Python(雖然版本有可能是較舊的),使用蘋果電腦(macOS系統(tǒng))的話,一般也已經(jīng)安裝了命令行版本的Python 2.x。在 Linux 或 macOS X 系統(tǒng)上檢測 Python 3 是否安裝的最簡單辦法是使用終端命令,在terminal應(yīng)用中輸入python3命令并回車執(zhí)行,觀察是否有對應(yīng)的提示出現(xiàn)。至于Microsoft Windows系統(tǒng),在目前最新的Win10版本上也并沒有內(nèi)置Python,因此我們必須手動安裝。
1.2.1 windows上安裝
Python官網(wǎng)
這里需要注意的是選擇對應(yīng)架構(gòu)的版本,我們需要首先搞清楚自己的系統(tǒng)是32位還是64位的
根據(jù)安裝程序的導(dǎo)引,我們一步步進(jìn)行,就能完成整個安裝。如果最終看到類似圖1-2這樣的提示,就說明安裝成功。
這時檢查我們的“開始”菜單,就能看到Python3.x的應(yīng)用程序,其中有一個“IDLE”(意為“integrated development environment”)程序,我們可以單擊此項目開始在交互式窗口中使用Python Shell。
1.2.2 在Ubuntu和MacOS上安裝
Ubuntu是諸多Linux發(fā)行版中受眾較多的一個系列。我們可以通過Applicatons中的添加應(yīng)用程序進(jìn)行安裝,在其中搜索Python3,并在結(jié)果中找到對應(yīng)的包,進(jìn)行下載。如果安裝成功,我們將在Applications(應(yīng)用程序)中找到Python IDLE,進(jìn)入Python Shell中。
訪問 Python官網(wǎng)并下載對應(yīng)的 Mac 平臺安裝程序,根據(jù)安裝包的指示進(jìn)行操作,我們最終將看到類似的成功提示:
關(guān)閉該窗口,并進(jìn)入Applications(或者是從LaunchPad頁面打開)中,我們就能找到Python Shell IDLE,啟動該程序,看到的結(jié)果應(yīng)該和Windows平臺上的結(jié)果類似。
1.3 Python基本語法介紹
1.3.1 hello world
輸出一行“Hello, World”,在C語言中需要的程序語句是這樣的:
而在Python里,可以用一行完成。
1.3.2 數(shù)據(jù)類型
在Python中內(nèi)置的主要數(shù)據(jù)類型包括:
1、Number,數(shù)值類型。可以是 Integers(1 和 2)、Float(1.1 和 1.2)、Fractions(1/2 和 2/3)、或者是 Complex Number(數(shù)學(xué)中的復(fù)數(shù))。
2、String,字符串,主要描述文本。
3、List,列表,一個包含元素的序列。
4、Tuple,元組,和列表類似,但是是不可變的。
5、Set,一個包含元素的集合,其中的元素是無序的。
6、Dict,字典,由一些鍵值對構(gòu)成。
7、Boolean,布爾類型,其值或為 True 或為 False
8、Byte,字節(jié), 例如一個以字節(jié)流表示的JPG文件
int和float之間,Python一般會使用是否有小數(shù)點來做區(qū)分
這里需要注意的是,將一個 int 與一個 int 相加將得到一個 int 。但將一個 int 與一個 float 相加將得到一個 float 。
這是因為Python會 把 int 強制轉(zhuǎn)換為 float 以進(jìn)行加法運算:
使用內(nèi)置的關(guān)鍵字進(jìn)行int與float之間的強制轉(zhuǎn)換是經(jīng)常用到的:
Python2中曾有int和long(長整數(shù)類型)的區(qū)分,但在Python3中,int吸收了2.x版本中的int和long,不再對較大的整數(shù)和較小的整數(shù)做區(qū)分。有了數(shù)值,我們就有了數(shù)值運算:文章來源:http://www.zghlxwxcb.cn/news/detail-839015.html
|
Python中還有相對比較特殊的分?jǐn)?shù)和復(fù)數(shù),分?jǐn)?shù)可以通過fractions模塊中的Fraction對象構(gòu)造:
復(fù)數(shù)可以用使用函數(shù) complex(real, imag) 或者是帶有后綴j的浮點數(shù)來創(chuàng)建:
布爾類型本身非常簡單,Python中的布爾類型以True和False兩個常量為值:
不過Python中對布爾類型和if else判斷的結(jié)合比較靈活
在介紹字符串之前,我們先對list(列表)和tuple(元組)做一個簡單的了解,因為list涉及一個Python中非常重要的概念:可迭代對象。對于列表而言,序列中的每一個元素都在一個固定的位置上(稱之為索引),索引從“0”開始。列表中的元素可以是任何數(shù)據(jù)類型,Python中列表對應(yīng)的是中括號“[]”的表示形式。
列表切片(slice)可以簡單地描述為從列表中取一部分的操作,通過指定兩個索引值,可以從列表中獲取稱作“切片”的某個部分。返回值是一個新列表,從第一個索引開始,知道第二個索引結(jié)束(不包含第二個索引的元素),列表切片的使用非常靈活:
向一個list中添加新元素的方法也很多樣,常見的包括:
這里要注意的是extend接受一個列表,并把其元素分別添加到原有的列表,類似“擴(kuò)展”。而append是把參數(shù)(參數(shù)有可能也是一個列表)作為一個元素整體添加到原有的列表中。insert() 方法會將單個元素插入到列表中。第一個參數(shù)是列表中將插入的位置(索引)。
從列表中刪除元素,可使用的方法也不少:
元組(tuple)與列表非常相似,最大的區(qū)別在于:1,元組是不可修改的,定義之后就“固定”了。2,元組在形式上是用“()”這樣的圓括號括起來的。由于元組是“凍結(jié)”的,所以不能插入或刪除元素。其他一些操作與列表類似:
【提示】元素可修改與不可修改是列表與元組最大(或者說唯一)的區(qū)別,基本上除了修改內(nèi)部元素的操作,其他列表適用的操作都可以用于元組。
在創(chuàng)建一個字符串時,我們將其用引號括起來,引號可以是單引號(')或者雙引號("),兩者沒有區(qū)別。字符串也是一個可迭代對象,因此,與取得列表中的元素一樣,也可以通過下標(biāo)記號取得字符串中的某個字符,一些適用于list的東西同樣適用于str:
集合的特點是無序且值唯一,創(chuàng)建集合和操作集合的常見方式包括:
字典(dict)相對于列表、元組和集合,會顯得稍微復(fù)雜一點。Python中的字典是鍵值對(key-value)的無序集合。在形式上也和集合類似,創(chuàng)建字典和操作字典的基本方式如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-839015.html
到了這里,關(guān)于python基礎(chǔ)及網(wǎng)絡(luò)爬蟲的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!