• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      淺談Python爬蟲技術(shù)的網(wǎng)頁數(shù)據(jù)抓取與分析

      2019-09-12 06:20:32吳永聰
      計算機時代 2019年8期
      關(guān)鍵詞:網(wǎng)絡爬蟲

      吳永聰

      摘? 要: 近年來,隨著互聯(lián)網(wǎng)的發(fā)展,如何有效地從互聯(lián)網(wǎng)獲取所需信息已成為眾多互聯(lián)網(wǎng)企業(yè)競爭研究的新方向,而從互聯(lián)網(wǎng)上獲取數(shù)據(jù)最常用的手段是網(wǎng)絡爬蟲。網(wǎng)絡爬蟲又稱網(wǎng)絡蜘蛛和網(wǎng)絡機器人,它是一個程序,可以根據(jù)特定的規(guī)則和給定的URL自動收集互聯(lián)網(wǎng)數(shù)據(jù)和信息。文章討論了網(wǎng)絡爬蟲實現(xiàn)過程中的主要問題:如何使用python模擬登錄、如何使用正則表達式匹配字符串獲取信息、如何使用mysql存儲數(shù)據(jù)等,并利用python實現(xiàn)了一個網(wǎng)絡爬蟲程序系統(tǒng)。

      關(guān)鍵詞: 網(wǎng)絡爬蟲; Python; MySQL; 正則表達式

      中圖分類號:TP311.11? ? ? ? ? 文獻標志碼:A? ? ?文章編號:1006-8228(2019)08-94-03

      Abstract: In recent years, with the development of the Internet, how to effectively obtain the required information from the Internet has become a new direction that many Internet companies are competing to research, and the most common means of obtaining data from the Internet is the web crawler. Web crawlers are also known as web spiders or web robots, it is a program that automatically collects Internet data and information according to a given URL and a specific rule. In this paper, the main issues in the implementation of web crawlers are discussed, such as how to use Python to simulate login, how to use regular expressions to match strings to get information and how to use MySQL to store data, and so on. At the end, a Python-based web crawler program system is realized through the research of Python language.

      Key words: web crawler; Python; MySQL; regular expression

      0 引言

      在網(wǎng)絡信息和數(shù)據(jù)爆炸性增長的時代,盡管互聯(lián)網(wǎng)信息技術(shù)的飛速發(fā)展,從如此龐大的信息數(shù)據(jù)中仍然很難找到真正有用的信息。于是,谷歌、百度、雅虎等搜索引擎應運而生。搜索引擎可以根據(jù)用戶輸入的關(guān)鍵字在Internet上檢索網(wǎng)頁,并為用戶查找與關(guān)鍵字相關(guān)或包含關(guān)鍵字的信息。網(wǎng)絡爬蟲作為搜索引擎的重要組成部分,在信息檢索過程中發(fā)揮著重要的作用。因此,網(wǎng)絡爬蟲的研究,對于搜索引擎的發(fā)展具有十分重要的意義。對于編寫網(wǎng)絡爬蟲,python有其獨特的優(yōu)勢。例如,python中有許多爬蟲框架,這使得web爬蟲更高效地對數(shù)據(jù)進行爬行。同時,Python是一種面向?qū)ο蟮慕忉屝愿呒壘幊陶Z言。它的語法比其他高級編程語言更簡單、更易閱讀和理解。因此,使用Python來實現(xiàn)Web爬蟲是一個很好的選擇。

      1 網(wǎng)絡爬蟲的概述

      1.1 網(wǎng)絡爬蟲的原理

      網(wǎng)絡爬蟲,又稱網(wǎng)絡蜘蛛和網(wǎng)絡機器人,主要用于收集互聯(lián)網(wǎng)上的各種資源。它是搜索引擎的重要組成部分,是一個可以自動提取互聯(lián)網(wǎng)上特定頁面內(nèi)容的程序。通用搜索引擎Web爬蟲工作流[1]:①將種子URL放入等待抓取URL隊列;②將等待URL從等待URL隊列中取出,進行讀取URL、DNS解析、網(wǎng)頁下載等操作;③將下載的網(wǎng)頁放入下載的網(wǎng)頁庫;④將下載的網(wǎng)頁URL放入已爬URL隊列;⑤分析已爬URL隊列中的URL提取新的URL被放置在要等待抓取URL隊列中,并進入下一個爬網(wǎng)周期。

      爬蟲的工作流程:①通過URL抓取頁面代碼;②通過正則匹配獲取頁面有用數(shù)據(jù)或者頁面上有用的URL;③處理獲取到的數(shù)據(jù)或者通過獲取到的新的URL進入下一輪抓取循環(huán)。

      1.2 網(wǎng)絡爬蟲的分類

      網(wǎng)絡爬蟲大體上可以分為通用網(wǎng)絡爬蟲,聚焦網(wǎng)絡爬蟲[2]。

      通用網(wǎng)絡爬蟲,也叫全網(wǎng)爬蟲,它從一個或者多個初始URL開始,獲取初始頁面的代碼,同時從該頁面提取相關(guān)的URL放入隊列中,直到滿足程序的停止條件為止。相比于通用網(wǎng)絡爬蟲,聚焦網(wǎng)絡爬蟲的工作流程比較復雜,它需要事先通過一定的網(wǎng)頁分析算法過濾掉一些與主題無關(guān)的URL,確保留下來的URL在一定程度上都與主題相關(guān),把它們放入等待抓取的URL隊列。然后再根據(jù)搜索策略,從隊列中選擇出下一步要抓取的URL,重復上述操作,直到滿足程序的停止條件為止。聚焦網(wǎng)絡爬蟲能夠爬取到與主題相關(guān)度更高的信息,例如:為了快速地獲取微博中的數(shù)據(jù),可以利用聚焦爬蟲技術(shù)開發(fā)出一個用來抓取微博數(shù)據(jù)的工具[3-5]。在如今大數(shù)據(jù)時代,聚焦爬蟲能做到大海里撈針,從網(wǎng)絡數(shù)據(jù)海洋中找出人們需要的信息,并且過濾掉那些“垃圾數(shù)據(jù)”(廣告信息等一些與檢索主題無關(guān)的數(shù)據(jù))。

      2 Python

      Python的作者是一個荷蘭人Guido von Rossum,1982年,Guido從阿姆斯特丹大學獲得了數(shù)學和計算機碩士學位[6]。相比于現(xiàn)在,在他的那個年代里,個人電腦的主頻和RAM都很低,這導致電腦的配置很低。為了讓程序能夠在個人電腦上運行,所有的編譯器的核心都是做優(yōu)化,因為如果不優(yōu)化,一個大一點的數(shù)組就能占滿內(nèi)存。Guido希望編寫出一種新的語言,這種語言應該具有功能全面,簡單易學,簡單易用,并且能夠擴展等特點。1989年,Guido開始編寫Python語言的編譯器。

      3 系統(tǒng)分析

      本系統(tǒng)是基于Python的網(wǎng)絡爬蟲系統(tǒng),用于登錄并爬取豆瓣網(wǎng)的一些相冊、日記、主題、評論等動態(tài)的數(shù)據(jù)信息。并且能夠把通過關(guān)鍵字查詢的動態(tài)信息數(shù)據(jù)存儲到數(shù)據(jù)庫一些數(shù)據(jù)保存到數(shù)據(jù)庫,存儲到本地txt文件,同時能夠把相冊動態(tài)中的圖片下載到本地,且把相冊信息也記錄下來,在每一頁的操作完成后可以進行翻頁和選頁,繼續(xù)操作。因此該系統(tǒng)應該滿足以下要求。

      (1) 能夠通過驗證碼的驗證模擬登錄豆瓣網(wǎng)。即不需要通過瀏覽器登錄,通過在控制臺輸入用戶名、密碼和驗證碼實現(xiàn)登錄豆瓣網(wǎng)。

      (2) 登錄成功后能夠爬取豆瓣網(wǎng)首頁頁面代碼。即通過登錄成功后的cookie能夠訪問游客權(quán)限不能訪問的頁面并把頁面代碼抓取下來。

      (3) 能夠在頁面代碼中提取出需要的信息。即需要通過正則表達式匹配等方法,從抓取到的頁面上獲取到有用的數(shù)據(jù)信息。

      (4) 能夠?qū)崿F(xiàn)翻頁和選頁的功能。即在訪問網(wǎng)站動態(tài)頁面時,能夠通過在控制臺中輸入特定的內(nèi)容進行翻頁或輸入頁碼進行選頁,然后抓取其它的頁面。

      (5) 實現(xiàn)關(guān)鍵字查詢的功能,對查到的數(shù)據(jù)爬取下來并存儲到數(shù)據(jù)庫表中。即在抓取到的頁面上獲取數(shù)據(jù)時,能夠通過在控制臺輸入關(guān)鍵字來爬取所需的信息。

      (6) 對爬取到的圖片URL能夠下載到本地并把圖片的詳細信息存儲到本地txt[12]。即不僅要把圖片下載到本地,還要把圖片的主題信息,圖片的所屬用戶,圖片的具體URL等信息存儲到txt文件。

      (7) 對日記和其他的動態(tài)信息存儲到本地不同的文件中。即對抓取到的不同的數(shù)據(jù)信息進行不同的存儲方式和存儲路徑。

      (8) 在登錄成功的情況下能夠進入個人中心中把當前用戶關(guān)注的用戶的信息存儲到數(shù)據(jù)庫表中。這些信息可能包括用戶的id,昵稱,主頁url,個性簽名等等。

      以上就是本課程爬蟲系統(tǒng)的一些基本需求,根據(jù)這些需求就可以明確系統(tǒng)的功能。由于本系統(tǒng)注重網(wǎng)絡信息資源的爬取,所以在用戶交互方面可能不太美觀,在該系統(tǒng)中并沒有編寫界面,所有的操作都在Eclipse的控制臺中進行。例如:在控制臺中輸入用戶名、密碼和驗證碼進行登錄,登錄成功后的頁面選擇,頁面選擇后的數(shù)據(jù)爬取等。

      但是,系統(tǒng)運行后爬取的數(shù)據(jù)可以在存儲數(shù)據(jù)的本地txt文件中或者在數(shù)據(jù)庫中查看。所以,本系統(tǒng)是否真的能夠爬取到數(shù)據(jù)的測試就可以通過觀察本地txt文件的內(nèi)容變化或數(shù)據(jù)庫表中記錄的變化來驗證。

      本爬蟲系統(tǒng)包括模擬登錄、頁面抓取、信息爬取、數(shù)據(jù)存儲等主要功能。其中,頁面抓取又包括翻頁抓取,選頁抓取,個人頁面抓取;信息爬取又包括動態(tài)抓取,關(guān)注用戶抓取;數(shù)據(jù)存儲又包括寫入文件,下載到本地,存入數(shù)據(jù)庫,如圖1所示。

      一段自動抓取互聯(lián)網(wǎng)信息的程序稱為爬蟲,主要組成:爬蟲調(diào)度器、URL管理器、網(wǎng)頁下載器、網(wǎng)頁解析器。

      ⑴ 爬蟲調(diào)度器:程序的入口,主要負責爬蟲程序的控制。

      ⑵ URL管理器:

      ① 添加新的URL到待爬取集合;

      ② 判斷待添加URL是否已存在;

      ③ 判斷是否還有待爬取的URL,將URL從待爬取集合移動到已爬取集合。

      URL存儲方式:Python內(nèi)存即set()集合,關(guān)系數(shù)據(jù)庫、緩存數(shù)據(jù)庫。

      ⑶ 網(wǎng)頁下載器:根據(jù)URL獲取網(wǎng)頁內(nèi)容,實現(xiàn)由有urllib2和request。

      ⑷ 網(wǎng)頁解析器:從網(wǎng)頁中提取出有價值的數(shù)據(jù),實現(xiàn)方法有正則表達式、html.parser、BeautifulSoup、lxml。

      4 結(jié)束語

      爬蟲是一個自動下載網(wǎng)頁的程序,它根據(jù)既定的抓取目標,有選擇地訪問萬維網(wǎng)上的網(wǎng)頁及其相關(guān)的鏈接,獲取所需要的信息。

      本文通過爬蟲對于將目標定為抓取與某一特定主題內(nèi)容相關(guān)的網(wǎng)頁,為面向主題的用戶查詢準備數(shù)據(jù)資源,實現(xiàn)了網(wǎng)頁數(shù)據(jù)抓取與分析。

      參考文獻(References):

      [1] 曾小虎.基于主題的微博網(wǎng)頁爬蟲研究[D].武漢理工大學, 2014.

      [2] 周立柱,林玲.聚焦爬蟲技術(shù)研究綜述[J].計算機應用,2005. 25(9):1965-1969

      [3] 周中華,張惠然,謝江.于Python的新浪微博數(shù)據(jù)爬蟲[J].計算機應用,2014.34(11):3131-3134

      [4] 劉晶晶.面向微博的網(wǎng)絡爬蟲研究與實現(xiàn)[D].復旦大學,2012.

      [5] 王晶,朱珂,汪斌強.基于信息數(shù)據(jù)分析的微博研究綜述[J].計算機應用,2012. 32(7):2027-2029,2037.

      [6] (挪) Magnus Lie Hetland. 司維,曾軍崴,譚穎華譯.Python基礎(chǔ)教程[M]. 人民郵電出版社,2014.

      猜你喜歡
      網(wǎng)絡爬蟲
      煉鐵廠鐵量網(wǎng)頁數(shù)據(jù)獲取系統(tǒng)的設(shè)計與實現(xiàn)
      基于社會網(wǎng)絡分析的權(quán)威網(wǎng)頁挖掘研究
      主題搜索引擎中網(wǎng)絡爬蟲的實現(xiàn)研究
      淺析如何應對網(wǎng)絡爬蟲流量
      中國市場(2016年23期)2016-07-05 04:35:08
      温宿县| 抚松县| 伽师县| 关岭| 庆云县| 南川市| 武冈市| 吴堡县| 阿拉尔市| 南澳县| 清原| 沅江市| 徐州市| 黄浦区| 武安市| 民勤县| 克山县| 清镇市| 苍梧县| 伊宁县| 莆田市| 洱源县| 宿州市| 江门市| 岐山县| 阿拉善盟| 永川市| 黄平县| 邵阳县| 马龙县| 忻州市| 泰和县| 水富县| 张家界市| 香河县| 甘泉县| 理塘县| 琼海市| 平原县| 陕西省| 贵阳市|