搜索引擎和(大多數)新聞類APP都不自己生產內容(雖然有些平臺孵化了自己的內容,但也只占整個平臺內容的很少的一部分,更重要的是,成本非常高)。
那么,他們的大量的內容從哪里來?
“我們不生產內容,只是內容的搬運工”網站外包,將互聯網上的內容“搬運”到自己的服務器上,這就是爬蟲。
首先,我們需要了解一下互聯網的結構:
互聯網上的內容數以億計,雖然很復雜,但說白了就是一張大網,網上的每個節點就是一個網頁,連接網頁的超鏈接(Hyperlinks)相當于線,線把所有的節點連接在一起,形成了一個復雜的網。
通過點擊超鏈接的文字或者圖片,就可以跳轉到對應的網頁。爬蟲可以自動訪問到每一個網頁,并把網頁的內容保存下來。
世界上第一個網絡爬蟲由麻省理工學院的學生馬修·格雷(Matthew Gray)在1993年寫成,之后的爬蟲盡管越來越復雜。
比如:可以實現更快的訪問速度、訪問更多的網頁、更好的將網站內容解析出來。但爬蟲的基本原理是一樣的,都主要包括三個部分:訪問網頁鏈接,下載網頁內容,解析網頁內容。
爬蟲的工作過程與我們查找網頁的過程是一樣的。
比如,我們想要查一下豆瓣上最新的電影:首先,在瀏覽器地址欄輸入網址鏈接 https://movie.douban.com/ ;之后,瀏覽器會跳轉到豆瓣電影;最后,我們就可以找到當前熱映的電影。
7行代碼就能爬取豆瓣電影的數據
同樣的,一個最簡單的爬蟲三步就可以爬取一個網頁:
訪問這個網頁;
把網頁內容下載下來;
對下載的內容進行解析。
最簡單的爬蟲三步就可以爬取一個網頁,那么要寫多少行代碼呢?
我們寫一個爬蟲,爬取豆瓣的“一周口碑榜”,只要7行代碼!
代碼如下:
7行代碼就能爬取豆瓣電影的數據
在Python環境中運行這幾行代碼,就可以獲取“一周口碑榜”了,結果如下:
[‘迦百農’, ‘綠皮書’, ‘馴龍高手3’, ‘速成家庭’, ‘阿麗塔:戰斗天使’, ‘膚色’, ‘死亡天使’, ‘黎明墻’, ‘小小巨人’, ‘出·路’]
其中最關鍵的是解析網頁內容,主要是(‘//td[@class=”title”]//a/text()’)這行代碼,大多數人可能對比較困惑。
這涉及到HTML網頁的結構:
可以把網頁理解成一個文件夾,打開一個文件夾,會發現子文件夾,子文件夾或許還有文件夾;通過打開一個個文件夾,最終找到需要的數據。
//td :這個相當于大目錄;
[@class=”title”]:這個相當于小目錄;
//a :這個相當于最小的目錄;
/text():這個是提取其中的文字內容。
至于是怎么寫出來這行代碼的,可以通過在網頁空白處點擊右鍵,查看源代碼,就可以找到對應的td、class=”title”、a等標識符。
大多數程序員寫爬蟲選擇python的理由很簡單:
首先,python有很多的庫,可以直接調用,比如:上面的代碼就引入了requests、lxml庫,分別實現訪問網頁、對網頁結構解析。有開源的庫九帆網絡,就直接調用,避免重復造輪子。
其次,python寫起來很方便,配置也簡單,短短幾行的代碼,就可以直接運行了,如果使用C或者Java,可能配置環境就要老半天。
(鄭重聲明:本文版權歸原作者linghu所有,轉載文章僅為傳播更多信息之目的,如有侵權,請聯系我們刪除;如作者信息標記有誤,請聯系我們修改。)
科技行業網站制作,