国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現簡易Web爬蟲詳解

2020-02-16 11:24:26
字體:
來源:轉載
供稿:網友

簡介:

網絡爬蟲(又被稱為網頁蜘蛛),網絡機器人,是一種按照一定的規則,自動地抓信息的程序或者腳本。假設互聯網是一張很大的蜘蛛網,每個頁面之間都通過超鏈接這根線相互連接,那么我們的爬蟲小程序就能夠通過這些線不斷的搜尋到新的網頁。

Python作為一種代表簡單主義思想的解釋型、面向對象、功能強大的高級編程語言。它語法簡潔并且具有動態數據類型和高層次的抽象數據結構,這使得它具有良好的跨平臺特性,特別適用于爬蟲等程序的實現,此外Python還提供了例如Spyder這樣的爬蟲框架,BeautifulSoup這樣的解析框架,能夠輕松的開發出各種復雜的爬蟲程序。

在這篇文章中,使用Python自帶的urllib和BeautifulSoup庫實現了一個簡單的web爬蟲,用來爬取每個URL地址及其對應的標題內容。

流程:

爬蟲算法從輸入中讀取的一個URL作為初始地址,向該地址發出一個Request請求。

請求的地址返回一個包含所有內容的,將其存入一個String變量,使用該變量實例化一個BeautifulSoup對象,該對象能夠將內容并且將其解析為一個DOM樹。

根據自己的需要建立正則表達式,最后借助HTML標簽從中解析出需要的內容和新的URL,將新的放入隊列中。

對于目前所處的URL地址與爬去的內容,在進行一定的過濾、整理后會建立索引,這是一個單詞-頁面的存儲結構。當用戶輸入搜索語句后,相應的分詞函數會對語句進行分解獲得關鍵詞,然后再根據每個關鍵詞查找到相應的URL。通過這種結構,可以快速的獲取這個單詞所對應的地址列表。在這里使用樹形結構的存儲方式,Python的字典和列表類型能夠較好的構建出單詞詞典樹。

從隊列中彈出目前的URL地址,在爬取隊列不為空的條件下,算法不斷從隊列中獲取到新的網頁地址,并重復上述過程。

實現:

環境:

Python3.5orAnaconda3

BeautifulSoup4

可以使用下面的指令安裝BeautifulSoup4,如果你是Ubuntu用戶,記得在命令前面加上sudo:

pip install beautifulsoup4

程序分別實現了幾個類,分別用于URL地址管理,Html內容請求、Html內容解析、索引建立以及爬蟲主進程。我將整個程序按照每個Class分開解釋,最后只要將他們放在一起就可以執行代碼了。

UrlManager類

這個類用來管理URL地址,new_urls用來保存還未爬取的URL地址,old_urls保存了已經爬取過的地址,兩個變量都使用set類型保證其中內容的唯一性。每次循環時,add_new_urls()向外提供了向new_urls變量中添加新urls的方法;add_new_url()方法,對每個url地址進行重復性檢查,符合條件的才進行添加操作;get_urls()向外提供了獲取新的url地址的方法;has_new_url()方法用來檢查爬取隊列是否為空。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 勐海县| 呼玛县| 仁寿县| 珲春市| 潜山县| 常山县| 黎城县| 泾川县| 资源县| 池州市| 夏邑县| 尖扎县| 平罗县| 墨江| 闵行区| 桂阳县| 兴安县| 宁德市| 东平县| 铁岭县| 南投县| 得荣县| 江源县| 柳州市| 孙吴县| 昭通市| 鸡东县| 五峰| 宜兴市| 信阳市| 文昌市| 江津市| 曲水县| 临夏市| 沁水县| 云龙县| 攀枝花市| 体育| 壤塘县| 淅川县| 孟津县|