《Python網絡爬蟲技術案例教程》(林忠會) 第1章.Python網絡爬蟲_第1頁
《Python網絡爬蟲技術案例教程》(林忠會) 第1章.Python網絡爬蟲_第2頁
《Python網絡爬蟲技術案例教程》(林忠會) 第1章.Python網絡爬蟲_第3頁
《Python網絡爬蟲技術案例教程》(林忠會) 第1章.Python網絡爬蟲_第4頁
《Python網絡爬蟲技術案例教程》(林忠會) 第1章.Python網絡爬蟲_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲Python網絡爬蟲技術案例教程PythonWangluoPachongJishuAnliJiaocheng作業(yè)布置單擊此處獲取APP掃碼作業(yè)布置方法作業(yè)布置宣傳片,歡迎播放了解單擊此處獲取微信掃碼作業(yè)布置方法使用說明文檔本課作業(yè)布置二維碼老師掃描此碼,即可進行線上作業(yè)布置COMMITTEDCOMMITTEDCOMMITTECOMMITTECONTENTS目錄COMMITTED第1章網絡爬蟲入門

第2章爬蟲基礎第3章網頁解析基礎第4章爬取動態(tài)加載數據第5章反爬蟲策略第6章模擬登錄和處理驗證碼

第7章爬取App和PC客戶端第8章爬蟲框架Scrapy第9章分布式爬蟲第10章項目實戰(zhàn).Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲掃碼下載文旌課堂APP掃碼簽到(202X.XX.XXXX:XX至202X.XX.XXXX:XX)簽到方式教師通過“文旌課堂APP”生成簽到二維碼,并設置簽到時間,學生通過“文旌課堂APP”掃描“簽到二維碼”進行簽到。簽到.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲第1章

網絡爬蟲入門本章導讀在當今這個數據大爆炸的信息時代,用戶與網絡的溝通本質上是數據的交換,這導致了互聯(lián)網信息數據量的爆發(fā)式增長。海量的互聯(lián)網數據蘊含著巨大的價值,用戶如何自動高效地從互聯(lián)網中獲取感興趣的信息并有效地應用是一個亟待解決的問題。在這樣的環(huán)境和需求的影響下,網絡爬蟲應運而生,它為互聯(lián)網數據的采集提供了新的方法。本章從網絡爬蟲概述入手,介紹網絡爬蟲的相關基礎知識,包括網絡爬蟲的原理、分類和應用,網絡爬蟲工作流程,網絡爬蟲協(xié)議,以及搭建Python開發(fā)環(huán)境等內容。學習目標理解網絡爬蟲的原理、分類和應用。掌握網絡爬蟲的工作流程。了解網絡爬蟲協(xié)議。能在Windows系統(tǒng)中搭建Python開發(fā)環(huán)境。1.1網絡爬蟲概述1.2網絡爬蟲工作流程1.3網絡爬蟲協(xié)議第1章網絡爬蟲入門1.4搭建Python開發(fā)環(huán)境.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲1.1網絡爬蟲概述SectionTitle1.1網絡爬蟲概述1.1.1網絡爬蟲原理網絡爬蟲又稱為“網絡蜘蛛”,是一個用來實現(xiàn)自動采集網絡數據的程序。如果將互聯(lián)網比作一張蜘蛛網,互聯(lián)網上的一個個網頁比作蜘蛛網上的一個個節(jié)點,那么網頁與網頁之間的鏈接關系可以比作節(jié)點間的連線,而網絡爬蟲就可以比作在網上爬來爬去的蜘蛛。蜘蛛爬到一個節(jié)點相當于訪問了該網頁,提取了信息,然后順著節(jié)點間的連線繼續(xù)爬行到下一個節(jié)點,這樣周而復始,蜘蛛就可以爬遍整個網絡的所有節(jié)點,抓取數據。1.1網絡爬蟲概述總的來說,網絡爬蟲的基本原理可用圖1-1描述。圖1-1網絡爬蟲基本原理1.1網絡爬蟲概述(1)預先設定一個或若干個初始網頁的URL,將初始URL加入待爬取URL列表中。(2)從待爬取列表中逐個讀取URL,并將URL加入已爬取URL列表中,然后下載網頁。(3)解析已下載的網頁,提取所需的數據和新的URL,并存儲提取的數據。(4)將新的URL與已爬取的URL列表進行比對,檢查該網頁是否已爬取,如果網頁沒有被爬取,則將新的URL放入待爬取URL列表的末尾,等待讀取。(5)如此往復,直到待爬取URL列表為空或者滿足設定的終止條件,最終達到遍歷網頁的目的。1.1網絡爬蟲概述統(tǒng)一資源定位符(UniformResourceLocator,URL)是對可以從互聯(lián)網上得到的資源位置和訪問方法的一種簡潔表示,是互聯(lián)網上標準資源的地址。1.1網絡爬蟲概述1.1.2網絡爬蟲分類網絡爬蟲按照系統(tǒng)結構和工作原理的不同,大致可以分為四類:系統(tǒng)結構和工作原理的不同通用網絡爬蟲聚焦網絡爬蟲增量式網絡爬蟲深層網絡爬蟲1.1網絡爬蟲概述(1)通用網絡爬蟲又稱全網爬蟲,是根據網絡爬蟲的基本原理實現(xiàn)的,它所爬取的目標會從初始設定的URL擴充到全網。通用網絡爬蟲主要應用于門戶網站、搜索引擎和大型網絡服務提供商的數據采集。1.1網絡爬蟲概述(2)聚焦網絡爬蟲爬取的目標是與預先定義好的主題相關的網頁。與通用網絡爬蟲相比,聚焦網絡爬蟲只選擇爬取與主題相關的網頁,極大地節(jié)省了硬件和網絡資源,它主要應用于對特定領域信息有需求的場景。聚焦網絡爬蟲在通用網絡爬蟲的基礎上,需要對提取的新URL進行過濾處理,過濾掉與目標主題無關的網頁,且根據一定的相關性搜索策略,確定待爬取URL列表的讀取順序。1.1網絡爬蟲概述(3)增量式網絡爬蟲爬取的目標是有更新的已下載網頁和新產生的網頁。爬蟲程序監(jiān)測網站數據更新的情況,然后在需要的時候只爬取發(fā)生更新或新產生的網頁。這樣,可有效減少數據下載量,及時更新已爬取的網頁,但是增加了爬行算法的復雜度和實現(xiàn)難度。增量式網絡爬蟲主要應用于網頁內容會時常更新的網站,或者不斷有新網頁出現(xiàn)的網站。1.1網絡爬蟲概述(4)深層網絡爬蟲爬取的目標是不能通過靜態(tài)鏈接獲取的,隱藏在搜索表單后的,只有用戶提交一些關鍵詞才能獲得的網頁,如用戶注冊后才可顯示內容的網頁。1.1網絡爬蟲概述1.1.3網絡爬蟲應用每個獨立的搜索引擎都有自己的爬蟲程序,爬蟲程序每天連續(xù)地爬取相關網站,提取信息保存到索引數據庫中,如Google爬蟲Googlebot、百度爬蟲Baiduspider、必應爬蟲Bingbot

等。此外,有些搜索引擎對應不同的業(yè)務還有不同的爬蟲,如百度圖片爬蟲Baiduspider-image、百度新聞爬蟲Baiduspider-news等。搜索引擎在用戶輸入搜索信息后并不是直接搜索整個互聯(lián)網,而是對預先建立好的索引數據庫進行檢索。1.1網絡爬蟲概述企業(yè)用戶在采集和分析數據時也時常會借助網絡爬蟲。例如,爬取產品的用戶信息進行分析,以確定目標客戶群體;爬取同類產品的銷售信息進行分析,以制定營銷策略等。當然,普通用戶也可以根據自己關注的主題采集所需要的數據,把瀏覽網站或App時所見到的數據都通過爬蟲程序保存下來,實現(xiàn)可見即可得。例如,爬取網站上的圖片、學術網站的論文、團購網站的價格及點評、各種電商平臺的商品信息、招聘網站的招聘信息等數據。1.1網絡爬蟲概述(4)深層網絡爬蟲爬取的目標是不能通過靜態(tài)鏈接獲取的,隱藏在搜索表單后的,只有用戶提交一些關鍵詞才能獲得的網頁,如用戶注冊后才可顯示內容的網頁。1.2網絡爬蟲工作流程.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲SectionTitle1.2網絡爬蟲工作流程網絡爬蟲是一個自動化的程序,它的工作流程非常簡單。爬蟲程序首先發(fā)送請求,獲取網頁響應的內容,然后解析網頁內容,最后將提取的數據存儲到文件或數據庫中??偨Y起來,其工作流程可以分為爬取網頁、解析網頁和存儲數據三個步驟,如圖1-2所示。圖1-2網絡爬蟲工作流程1.2網絡爬蟲工作流程1.2.1爬取網頁爬蟲程序首先要做的工作是爬取網頁,即獲取網頁的源代碼。源代碼里包含了網頁的有用信息,所以只要把源代碼爬取下來,就可以從中提取想要的信息。爬蟲程序向網站的服務器發(fā)送一個HTTP請求,服務器返回給爬蟲程序包含所需數據的HTTP響應(即網頁源代碼)。Python提供了許多與網絡爬蟲相關的庫,其中,在爬取網頁方面有urllib、requests、selenium庫等。1.2網絡爬蟲工作流程1.2.2解析網頁爬取網頁后,接下來就是解析網頁了。解析網頁是用戶根據網頁結構,分析網頁源代碼,從中提取想要的數據。它可以使雜亂的數據變得條理清晰,以便用戶后續(xù)處理和分析。解析網頁萬能的方法是正則表達式,但是構造正則表達式比較復雜且容易出錯,所以Python根據網頁節(jié)點屬性、CSS選擇器及XPath語法提供了網頁的解析庫,如beautifulsoup4、lxml庫等。使用這些庫,用戶可以高效快速地解析網頁。1.2網絡爬蟲工作流程1.2.3存儲數據解析網頁提取數據后,一般要將提取到的數據保存起來以便后續(xù)使用。保存數據的方式有很多種,可以將其簡單保存到JSON或CSV文件中,也可以保存到數據庫中,如MySQL和MongoDB等。1.3網絡爬蟲協(xié)議.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲SectionTitle1.3網絡爬蟲協(xié)議1.3.1網絡爬蟲合法性雖然互聯(lián)網世界已經通過自己的規(guī)則建立了一定的道德規(guī)范(Robots協(xié)議),但法律部分還在建立和完善中。從目前的情況來看,如果抓取的數據用于個人使用或科學研究,那么基本上是不違法的;但如果數據用于其他用途,尤其是轉載或商業(yè)用途,那么根據爬取網站數據的不同情況有不同的后果,嚴重的將會引起民事糾紛甚至觸犯法律。因此,用戶在爬取數據時應避免以下幾個方面的問題。1.3網絡爬蟲協(xié)議應避免以下幾個方面的問題(1)侵犯著作權。(2)侵犯商業(yè)秘密。(3)侵犯個人隱私。(4)構成不正當競爭。(5)侵入計算機系統(tǒng),構成刑事犯罪。1.3網絡爬蟲協(xié)議百度與大眾點評不正當競爭糾紛案是百度公司因使用技術手段抓取并使用大眾點評內容而被認定為構成不正當競爭的案例。本案在2016年被列為“影響中國互聯(lián)網法制進程十大案例”之一。大眾點評是上海漢濤信息咨詢有限公司(下稱“漢濤公司”)向網絡用戶提供商戶基本信息及點評信息的生活服務App。北京百度網訊科技有限公司(下稱“百度公司”)使用技術手段在大眾點評等App上抓取了商戶的基本信息及點評信息,用戶使用其運營的百度地圖App查詢位置時,無須跳轉至大眾點評界面,就可直接在百度地圖界面獲取商戶的基本信息和點評信息。漢濤公司以百度公司等相關主體構成不正當競爭向法院起訴。在本案審理過程中,法院將《反不正當競爭法》第二條作為主要裁判依據,并最終認定百度公司構成不正當競爭。1.3網絡爬蟲協(xié)議1.3.2Robots協(xié)議Robots協(xié)議(又稱“爬蟲協(xié)議”)的全稱是“網絡爬蟲排除標準”(Robotsexclusionprotocol)。網站管理者可以通過它來表達是否希望爬蟲程序自動獲取網站信息的意愿。管理者可以在網站根目錄下放置一個robots.txt文件,并在文件中列出哪些鏈接不允許爬蟲程序獲取。當爬蟲程序訪問一個網站時,它會首先檢查該網站根目錄下是否存在robots.txt文件,如果存在,爬蟲程序就會按照該文件中的內容來確定訪問范圍;如果不存在,爬蟲程序就能夠訪問網站上所有沒被保護的網頁。1.3網絡爬蟲協(xié)議robots.txt文件遵循一定的格式,下面以知乎的robots.txt文件為例進行介紹。訪問/robots.txt,可以查看完整代碼(這里僅截取部分代碼進行分析),如圖1-3所示。圖1-3知乎的robots.txt文件部分代碼1.3網絡爬蟲協(xié)議“User-agent:Googlebot-Image”表示這部分代碼針對谷歌圖片爬蟲,禁止或允許谷歌圖片爬蟲爬取某些文件;如果代碼為“User-agent:*”,則表示針對所有搜索引擎的爬蟲程序?!癉isallow:/appview/”表示禁止爬取網站根目錄的appview文件夾下的文件。1.3網絡爬蟲協(xié)議“Disallow:/*?guide*”表示禁止爬取網站中所有包含guide的網址?!癆llow:/search-special”表示允許爬取網站根目錄下所有以search-special開頭的文件夾和文件。1.3網絡爬蟲協(xié)議當然,如果要禁止爬蟲程序爬取網站中的所有內容,可以用更簡單的方法。例如,淘寶網不允許百度的爬蟲程序訪問其網站下所有的目錄,其robots.txt文件內容如圖1-4所示。圖1-4淘寶網的robots.txt文件1.3網絡爬蟲協(xié)議在百度里搜索淘寶就會顯示“由于該網站的robots.txt文件存在限制指令(限制搜索引擎抓?。到y(tǒng)無法提供該頁面的內容描述”,如圖1-5所示。圖1-5百度搜索淘寶官網的顯示情況1.4搭建Python開發(fā)環(huán)境.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲.Python網絡爬蟲SectionTitle1.4搭建Python開發(fā)環(huán)境學習Python網絡爬蟲首先需要搭建Python開發(fā)環(huán)境,一般情況下,用戶可以直接下載并安裝Python,也可以通過Anaconda安裝Python。本節(jié)介紹安裝Anaconda和PyCharm編輯器,來搭建Python開發(fā)環(huán)境的方法,從而開始網絡爬蟲的開發(fā)之旅。

搭建Python開發(fā)環(huán)境1.4搭建Python開發(fā)環(huán)境Anaconda是一個開源的Python發(fā)行版本,它包含了Conda、Python等超過180個科學包及其依賴項。PyCharm是一款非常優(yōu)秀的Python編輯器,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高效率的工具,如調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制等。1.4搭建Python開發(fā)環(huán)境1.4.1安裝Anaconda1.下載步驟一:訪問/,在打開的Anaconda主頁中選擇“Products”→“IndividualEdition”選項,如圖1-6所示。圖1-6Anaconda主頁

訪問/,1.4搭建Python開發(fā)環(huán)境步驟二:打開下載頁面,向下拖動滾動條,直到出現(xiàn)Anaconda安裝版本信息,選擇“Windows”→“Python3.7”→“64-BitGraphicalInstaller”選項,下載安裝軟件,如圖1-7所示。圖1-7下載Anaconda1.4搭建Python開發(fā)環(huán)境2.安裝步驟一:雙擊下載好的Anaconda3-2020.02-Windows-x86_64.exe文件,在打開的對話框中單擊“Next”按鈕,如圖1-8所示。圖1-8歡迎安裝

1.4搭建Python開發(fā)環(huán)境步驟二:顯示“LicenseAgreement”界面,單擊“IAgree”按鈕,如圖1-9所示。圖1-9同意安裝許可1.4搭建Python開發(fā)環(huán)境步驟三:顯示“SelectInstallationType”界面,在“Installfor”列表中勾選“JustMe”單選鈕,單擊“Next”按鈕,如圖1-10所示。如果系統(tǒng)創(chuàng)建了多個用戶而且都使用Anaconda,則勾選“AllUsers”單選鈕。圖1-10選擇用戶1.4搭建Python開發(fā)環(huán)境步驟四:顯示“ChooseInstallLocation”界面,直接使用默認路徑,單擊“Next”按鈕,如圖1-11所示。

圖1-11設置安裝路徑1.4搭建Python開發(fā)環(huán)境步驟五:顯示“AdvancedInstallationOptions”界面。在“AdvancedOptions”列表中勾選“AddAnaconda3tomyPATHenvironmentvariable”和“RegisterAnaconda3asmydefaultPython3.7”復選框,單擊“Install”按鈕,如圖1-12所示。圖1-12設置系統(tǒng)環(huán)境1.4搭建Python開發(fā)環(huán)境步驟六:安裝完成后單擊“Next”按鈕,最后單擊“Finish”按鈕,完成Anaconda3的安裝。勾選“AddAnaconda3tomyPATHenvironmentvariable”表示把Anaconda3加入環(huán)境變量;勾選“RegisterAnaconda3asmydefaultPython3.7”表示將Anaconda3注冊為默認安裝的Python3.7。1.4搭建Python開發(fā)環(huán)境3.驗證步驟一:單擊“開始”按鈕,選擇“Anaconda3”→“AnacondaPrompt”選項,如圖1-13所示。圖1-13啟動AnacondaPrompt

1.4搭建Python開發(fā)環(huán)境步驟二:單擊“開始”按鈕,選擇“Anaconda3”→“AnacondaPrompt”選項,如圖1-13所示。

圖1-14Anaconda庫名和版本號列表

1.4搭建Python開發(fā)環(huán)境1.4.2安裝PyCharm1.下載訪問/pycharm/download/#section=windows,在打開的下載頁面中單擊“Community”下的“Download”按鈕,下載社區(qū)版,如圖1-15所示。圖1-15下載PyCharm1.4搭建Python開發(fā)環(huán)境2.安裝步驟一:解壓下載好的安裝包,雙擊pycharm-community-2020.1.1.exe文件,運行安裝程序。步驟二:根據安裝提示進行安裝即可。1.4搭建Python開發(fā)環(huán)境在“InstallationOptions”對話框中勾選所有復選框,如圖1-16所示。圖1-16設置安裝選項1.4搭建Python開發(fā)環(huán)境3.使用步驟一:啟動PyCharm,打開“ImportPyCharmSettings”對話框,勾選“Donotimportsettings”單選鈕,單擊“OK”按鈕,如圖1-17所示。圖1-17PyCharm導入設置1.4搭建Python開發(fā)環(huán)境步驟二:

打開“CustomizePyCharm”對話框,勾選“Light”單選鈕,單擊“SkipRemainingandSetDefaults”按鈕,如圖1-18所示。圖1-18設置用戶界面主題1.4搭建Python開發(fā)環(huán)境步驟1和步驟2中的對話框只在PyCharm首次使用時會顯示,進行配置后,再次使用時就不需要再進行配置了。1.4搭建Python開發(fā)環(huán)境步驟三:打開“WelcometoPyCharm”對話框,選擇“CreateNewProject”選項,如圖1-19所示。圖1-19創(chuàng)建新項目1.4搭建Python開發(fā)環(huán)境步驟四:打開“NewProject”對話框,在“Location”編輯框中設置項目保存的路徑,并將項目命名為“Test”;在“Newenvironmentusing”下拉列表中選擇默認的“Virtualenv”選項;在“Baseinterpreter”中選擇Anaconda安裝目錄下的python.exe,單擊“Create”按鈕,如圖1-20所示。圖1-20配置新項目環(huán)境1.4搭建Python開發(fā)環(huán)境Virtualenv是一個虛擬環(huán)境管理器,它可以創(chuàng)建多個虛擬環(huán)境,為不同項目提供獨立的Python運行環(huán)境,以解決不同項目間多版本的沖突問題。在不繼承全局安裝包的情況下,在Virtualenv環(huán)境中安裝所需要的包時,會自動安裝到該虛擬環(huán)境下,不會對其他項目環(huán)境有任何影響。1.4搭建Python開發(fā)環(huán)境步驟五:

打開“PyCharm”窗口。右擊項目名“Test”,在彈出的快捷菜單中選擇“New”→“PythonFile”選項,新建一個Python文件,如圖1-21所示。圖1-21新建Python文件1.4搭建Python開發(fā)環(huán)境步驟六:打開“NewPythonfile”對話框,將文件命名為“HelloWorld”,雙擊“Pythonfil

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論