版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
大數(shù)據(jù)導(dǎo)論數(shù)
據(jù)
采
集查看網(wǎng)頁源碼及結(jié)構(gòu)目錄01網(wǎng)頁打開流程02DOM文檔對(duì)象模型
03網(wǎng)頁源碼分析
網(wǎng)頁打開流程HTML文檔對(duì)象模型(DOM)瀏覽器會(huì)把服務(wù)器響應(yīng)的HTML文檔解析成一個(gè)樹結(jié)構(gòu),并且在此基礎(chǔ)上定義了訪問和操作HTML文檔的標(biāo)準(zhǔn)。根據(jù)W3C標(biāo)準(zhǔn)我們稱之為HTMLDOM(DocumentObjectModel)文檔對(duì)象模型。DOM根節(jié)點(diǎn)
末梢節(jié)點(diǎn)下無其它子節(jié)點(diǎn)存在,如Inupt、Td、H1之類的節(jié)點(diǎn)。03在DOM結(jié)構(gòu)樹中,處于中間位置的節(jié)點(diǎn),此類節(jié)點(diǎn)內(nèi)部仍然有其它節(jié)點(diǎn),如Body、Div、Table節(jié)點(diǎn)等等。02DOM根節(jié)點(diǎn),訪問文檔中各個(gè)標(biāo)簽的時(shí)候,都需要先訪問該節(jié)點(diǎn)01末梢節(jié)點(diǎn)
末梢節(jié)點(diǎn)
分支節(jié)點(diǎn)
分支節(jié)點(diǎn)末梢節(jié)點(diǎn)
HTML文檔中的所有內(nèi)容都是節(jié)點(diǎn),且有以下幾個(gè)類型。整個(gè)文檔是一個(gè)文檔節(jié)點(diǎn)(document節(jié)點(diǎn))每個(gè)HTML元素是元素節(jié)點(diǎn)HTML元素內(nèi)的文本是文本節(jié)點(diǎn)每個(gè)HTML屬性是屬性節(jié)點(diǎn)注釋是注釋節(jié)點(diǎn)HTMLDOM結(jié)構(gòu)解析網(wǎng)頁源碼分析分析新浪網(wǎng)的網(wǎng)頁源碼1.瀏覽器輸入網(wǎng)址:建議用谷歌瀏覽器2.打開開發(fā)者模式(按F12)3.選擇“Elements”功能,查看HTML文檔4.在HTML文檔中,移動(dòng)鼠標(biāo),并觀察網(wǎng)頁變深色的區(qū)域。深色區(qū)域即對(duì)應(yīng)了鼠標(biāo)所在的HTML標(biāo)簽內(nèi)容。網(wǎng)頁源碼分析通過這種分析方式,可以快速定位需要采集的內(nèi)容,進(jìn)而可以通過DOM結(jié)構(gòu)樹提取相關(guān)內(nèi)容數(shù)
據(jù)
采
集移動(dòng)端APP數(shù)據(jù)請(qǐng)求結(jié)構(gòu)目錄01存在問題
02APP內(nèi)容組成03分析采集思路
04截獲分析與請(qǐng)求模擬存在的問題APP內(nèi)容采集安裝在移動(dòng)端內(nèi)容傳輸多樣化部分APP對(duì)數(shù)據(jù)流加密APP內(nèi)容組成APP內(nèi)容在一個(gè)界面中包含各種元素,有視頻、圖片、用戶賬號(hào)數(shù)據(jù)、用戶業(yè)務(wù)數(shù)據(jù)等等。同一個(gè)動(dòng)作可能觸發(fā)多個(gè)內(nèi)容更新,但是絕大部分APP會(huì)將不同的數(shù)據(jù)存放在不同的服務(wù)器中,以便提升響應(yīng)效率。數(shù)據(jù)從服務(wù)器中響應(yīng)到APP中是通過HTTP或者HTTPS協(xié)議來完成的,響應(yīng)內(nèi)容可分為二進(jìn)制流、HTML文檔、XML文檔、JSON數(shù)據(jù)。APP內(nèi)容組成服務(wù)器1服務(wù)器2分析與采集思路截獲APP的請(qǐng)求數(shù)據(jù)流,并分析請(qǐng)求和響應(yīng)數(shù)據(jù)報(bào)文,確定APP界面數(shù)據(jù)與響應(yīng)報(bào)文關(guān)系既然APP內(nèi)容更新是通過HTTP或者HTTPS協(xié)議實(shí)現(xiàn)的,那么可以用Python模擬HTTP請(qǐng)求報(bào)文針對(duì)不同的數(shù)據(jù)流,發(fā)起不同的請(qǐng)求響應(yīng)處理對(duì)各種響應(yīng)數(shù)據(jù)流的進(jìn)行解析和數(shù)據(jù)整合++Filebeat協(xié)議代理器安卓模擬器Python爬蟲數(shù)據(jù)流截獲分析與請(qǐng)求模擬安卓模擬器電腦安裝解決APP在移動(dòng)端無法分析的問題通過Fiddler分析數(shù)據(jù)流從眾多的數(shù)據(jù)流中,尋找到APP相關(guān)頁面或功能的數(shù)據(jù)流確定請(qǐng)求URL與響應(yīng)報(bào)文的關(guān)系Fiddler代理安卓模擬器數(shù)據(jù)流讓APP所有數(shù)據(jù)經(jīng)過Fiddler代理Python模擬數(shù)據(jù)流請(qǐng)求報(bào)文通過響應(yīng)報(bào)文內(nèi)容結(jié)果,提取有用數(shù)據(jù)存儲(chǔ)數(shù)據(jù)分析明確采集對(duì)象-習(xí)題講解————數(shù)據(jù)采集1.HTML文檔對(duì)象模型(DOM)中,每一個(gè)元素的組織方式是()。A.層次結(jié)構(gòu)B.樹型結(jié)構(gòu)C.網(wǎng)狀結(jié)構(gòu)D.都不是2.分析網(wǎng)頁源代碼,需要在瀏覽器中,按()鍵進(jìn)入開發(fā)者工具。A.
F1B.
F2C.
F11D.
F123.在開發(fā)者工具中,如何定位目標(biāo)元素與對(duì)應(yīng)的源碼位置?A.根據(jù)HTML標(biāo)簽含義,逐行對(duì)照,直到找到目標(biāo)元素的源碼B.移動(dòng)鼠標(biāo),并觀察網(wǎng)頁變深色的區(qū)域,深色區(qū)域便是目標(biāo)元素所在源碼區(qū)域C.根據(jù)經(jīng)驗(yàn),大致判斷目標(biāo)元素在界面中的順序關(guān)系,大致確定在源代碼中的位置。D.通過搜索功能實(shí)現(xiàn)。4.下列說法中,正確的是()。A.移動(dòng)端APP的數(shù)據(jù)采集分析過程,由于看不到數(shù)據(jù)的源碼,無法分析數(shù)據(jù)格式。B.移動(dòng)端APP的數(shù)據(jù)采集分析過程,需要借助HTTP/HTTPS抓包軟件實(shí)現(xiàn)。C.移動(dòng)端APP的抓包過程中,都是明文數(shù)據(jù)。D.最終程序采集的時(shí)候,也需要借助抓包軟件。5.簡述一下移動(dòng)端APP的數(shù)據(jù)采集分析為什么需要用到抓包軟件?
由于移動(dòng)端APP的特殊性,無法直接通過類似瀏覽器的方式分析網(wǎng)頁的html源代碼,但是其請(qǐng)求與響應(yīng)的過程仍然是HTTP協(xié)議,因此通過抓包軟件,抓取該過程中的請(qǐng)求數(shù)據(jù)報(bào)和響應(yīng)數(shù)據(jù)報(bào),并對(duì)報(bào)文進(jìn)行解析分析,即可得到想要的數(shù)據(jù)。6.
簡述一下移動(dòng)端APP的數(shù)據(jù)采集分析過程。
(1)、設(shè)置移動(dòng)端通過電腦端代理上網(wǎng)
(2)、移動(dòng)端和電腦端都安裝Fiddler的證書
(3)、通過Fiddler抓包工具,抓取跟APP相關(guān)的請(qǐng)求和響應(yīng)報(bào)文
(4)、解析報(bào)文內(nèi)容數(shù)
據(jù)
采
集HTTP協(xié)議介紹目錄01HTTP簡介
02請(qǐng)求報(bào)文
03響應(yīng)報(bào)文
HTTP簡介HTTP協(xié)議什么是HTTP協(xié)議?請(qǐng)求-響應(yīng)的模式HTTP協(xié)議規(guī)定,請(qǐng)求從客戶端發(fā)出,最后服務(wù)器端響應(yīng)該請(qǐng)求并返回。因此:必須是先從客戶端開始建立通信的,服務(wù)器端在沒有接收到請(qǐng)求之前,不會(huì)發(fā)送響應(yīng)HTTP簡介HTTP協(xié)議是HyperTextTransferProtocol(超文本傳輸協(xié)議)的縮寫,是用于從服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。工作機(jī)制:1、建立TCP連接:點(diǎn)擊鏈接即自動(dòng)完成連接。2、客戶端發(fā)送請(qǐng)求報(bào)文(Request):客戶端通過URL向HTTP服務(wù)端即WEB服務(wù)器發(fā)送一個(gè)HTTP協(xié)議的請(qǐng)求數(shù)據(jù)包。3、服務(wù)器響應(yīng)報(bào)文(Response):Web服務(wù)器收到的請(qǐng)求后,根據(jù)請(qǐng)求內(nèi)容,向客戶端發(fā)送響應(yīng)數(shù)據(jù)。4、結(jié)束TCP連接。HTTP協(xié)議之請(qǐng)求報(bào)文請(qǐng)求報(bào)文由四部分組成:第一部分:請(qǐng)求行,用來說明請(qǐng)求類型,要訪問的資源以及所使用的HTTP版本號(hào)。第三部分:空行,請(qǐng)求頭部后面的空行是必須的。本例中請(qǐng)求數(shù)據(jù)為空第四部分:請(qǐng)求數(shù)據(jù)也叫主體,可以添加任意的其他數(shù)據(jù)。第二部分:請(qǐng)求頭部,緊接著請(qǐng)求行(即第一行)之后的部分,用來說明服務(wù)器要使用的附加信息。HTTP協(xié)議之響應(yīng)報(bào)文響應(yīng)報(bào)文由四部分組成:第一部分:狀態(tài)行,由HTTP協(xié)議版本號(hào),狀態(tài)碼,狀態(tài)消息三部分組成。第二部分:消息報(bào)頭,用來說明客戶端要使用的一些附加信息。第三部分:空行,消息報(bào)頭后面的空行是必須的本例中請(qǐng)求數(shù)據(jù)為空第四部分:響應(yīng)正文,服務(wù)器返回給客戶端的數(shù)據(jù)信息。數(shù)
據(jù)
采
集構(gòu)建數(shù)據(jù)采集請(qǐng)求目錄01模擬HTTP請(qǐng)求訪問資源
02如何選擇語言
03操作URL的Python模塊
04瀏覽器的模擬-構(gòu)建Headers
瀏覽器訪問資源1、用戶點(diǎn)擊鏈接、瀏覽器自動(dòng)生成HTTP請(qǐng)求報(bào)文2、服務(wù)器收到請(qǐng)求報(bào)文,根據(jù)報(bào)文內(nèi)容,回復(fù)響應(yīng)報(bào)文3、瀏覽器收到服務(wù)器的響應(yīng)報(bào)文,解析提取模擬HTTP請(qǐng)求訪問資源我是客戶端程序模擬訪問資源1、程序構(gòu)建HTTP請(qǐng)求報(bào)文,模擬發(fā)送請(qǐng)求2、服務(wù)器收到請(qǐng)求報(bào)文,根據(jù)報(bào)文內(nèi)容,回復(fù)響應(yīng)報(bào)文3、程序收到服務(wù)器的響應(yīng)報(bào)文,解析提取語言如何選擇PythonJavaC/C++.NETC/C++:高效率,快速,適合通用搜索引擎做全網(wǎng)爬取。但其缺點(diǎn)明顯,由于現(xiàn)有第三方代碼支持較少,原生代碼開發(fā)難度大,代碼量龐大。Perl,Java,Ruby:簡單,易學(xué),良好的文本處理能方便網(wǎng)頁內(nèi)容的提取,但效率不高,適合對(duì)少量網(wǎng)站的聚焦爬取。.NET:平臺(tái)支持不好,僅僅可以在window系統(tǒng)平臺(tái)運(yùn)行。Python在HTTP協(xié)議模擬的框架成熟,且平臺(tái)無限制,實(shí)際應(yīng)用最為廣泛。操作URL的Python模塊第三方庫,需要另安裝安裝:pipinstallrequests導(dǎo)入模塊:importrequestsrequests自有庫,免安裝導(dǎo)入模塊:importurllib.requesturllibRequest庫不帶參數(shù)發(fā)送請(qǐng)求帶參數(shù)發(fā)送請(qǐng)求/search.jsp?wbtreeid=1001urllib庫urllib.request請(qǐng)求模塊urllib.error異常處理模塊urllib.parseurl解析模塊urllib.robotparserrobots.txt解析模塊4個(gè)模塊注意:在Python3以后的版本中,urllib2這個(gè)模塊已經(jīng)不單獨(dú)存在(也就是說當(dāng)你importurllib2時(shí),系統(tǒng)提示你沒這個(gè)模塊),urllib2被合并到了urllib中,叫做urllib.request和urllib.error本課程基于Python3介紹。urllib庫不帶參數(shù)發(fā)送請(qǐng)求帶參數(shù)發(fā)送請(qǐng)求/search.jsp?wbtreeid=1001瀏覽器的模擬-構(gòu)建Headers未能成功偽裝成瀏覽器的正常訪問行為,將被反爬蟲攔截選擇正確的請(qǐng)求報(bào)文中的Headers參數(shù)方法1、任意打開一個(gè)網(wǎng)頁,比如打開。2、按F12,會(huì)出現(xiàn)一個(gè)窗口。切換到Network標(biāo)簽頁。3、然后單擊網(wǎng)頁中的“百度一下”,即讓網(wǎng)頁發(fā)生一個(gè)動(dòng)作。4、將界面右上方的標(biāo)簽切換到“Headers”中,即可以看到了對(duì)應(yīng)的頭信息,就可以找到User-Agent字樣的一串信息。5、復(fù)制User-Agent數(shù)據(jù)。瀏覽器的模擬-構(gòu)建Headers思考:登陸用戶的請(qǐng)求報(bào)文如何模擬?解決方案:1、使用真實(shí)場(chǎng)景下的headers參數(shù),查詢到正確的Cookie或session值。2、在請(qǐng)求報(bào)文的頭部信息中,完善headers的各類參數(shù)。瀏覽器的模擬-構(gòu)建Headers構(gòu)造采集請(qǐng)求-習(xí)題講解————數(shù)據(jù)采集1.在HTTP協(xié)議的“請(qǐng)求/響應(yīng)”交互模型中,以下說法錯(cuò)誤的是()。A.客戶機(jī)在發(fā)送請(qǐng)求之前需要主動(dòng)與服務(wù)器建立連接。B.服務(wù)器無法主動(dòng)向客戶機(jī)發(fā)起連接。C.服務(wù)器無法向客戶機(jī)發(fā)送數(shù)據(jù)。D.以上都錯(cuò)誤。2.HTTP請(qǐng)求報(bào)文中,可以不包含的是()A.請(qǐng)求行B.請(qǐng)求頭C.請(qǐng)求頭后的空行D.請(qǐng)求數(shù)據(jù)3.HTTP協(xié)議的報(bào)文有()兩種類型A.
發(fā)送報(bào)文和接收?qǐng)?bào)文B.
請(qǐng)求報(bào)文和響應(yīng)報(bào)文C.
報(bào)文頭和報(bào)文體D.
實(shí)體報(bào)文和控制報(bào)文。4.通過程序構(gòu)造數(shù)據(jù)采集請(qǐng)求,本質(zhì)上是()。A.通過程序?qū)崿F(xiàn)點(diǎn)擊頁面按鈕,獲得數(shù)據(jù)。B.通過程序構(gòu)造HTTP請(qǐng)求,獲得響應(yīng)報(bào)文。C.通過程序操作瀏覽器,讀取瀏覽器返回?cái)?shù)據(jù)。D.通過程序抓包,讀取數(shù)據(jù)包中的數(shù)據(jù)。5.通過程序構(gòu)造采集請(qǐng)求,不能使用哪種語言()A.
.NETB.
C語言C.
JavaScriptD.
Python6.構(gòu)造請(qǐng)求報(bào)文中的Headers的作用是A.使得構(gòu)造出的請(qǐng)求報(bào)文與真實(shí)瀏覽器的請(qǐng)求報(bào)文一致,防止服務(wù)器反爬蟲。B.HTTP請(qǐng)求協(xié)議規(guī)定的內(nèi)容,參數(shù)內(nèi)容無要求C.與服務(wù)器協(xié)商返回的數(shù)據(jù)格式D.用于解析響應(yīng)報(bào)文。數(shù)
據(jù)
采
集基于Xpath的數(shù)據(jù)爬取——豆瓣電影TOP250為例目錄01案例需求及源碼結(jié)構(gòu)分析02Xpath插件獲取表達(dá)式
03爬取功能劃分
04爬取代碼實(shí)現(xiàn)
需求:爬取豆瓣電影評(píng)分TOP250頁面的電影名字、電影介紹鏈接、電影評(píng)分等信息。URL:
/top250案例需求及源碼結(jié)構(gòu)分析多頁面的分析處理:分析分頁的鏈接可以發(fā)現(xiàn),每一頁有25條電影記錄,每頁的鏈接為改變值是start參數(shù)例如第二頁實(shí)際URL:/top250?start=25&filter=案例需求及源碼結(jié)構(gòu)分析Xpath插件獲取表達(dá)式通過瀏覽器安裝好的Xpath插件,可獲得到如下信息:電影節(jié)點(diǎn)集合://*[@id="content"]/div/div[1]/ol/li電影名字:div/div[2]/div[1]/a/span[1]/text()簡介鏈接:div/div[2]/div[2]/div/span[2]/text()評(píng)分:div/div[2]/div[1]/a/@href爬取功能劃分從html文檔中,解析出需求信息網(wǎng)頁解析從服務(wù)器獲取html文檔獲取html文檔依次訪問所有頁面多頁面讀取調(diào)度爬取代碼實(shí)現(xiàn)多頁面讀取調(diào)度爬取代碼實(shí)現(xiàn)獲取html文檔爬取代碼實(shí)現(xiàn)解析網(wǎng)頁內(nèi)容Xpath插件安裝使用數(shù)據(jù)采集XPathhelper是一款Chrome瀏覽器的開發(fā)者插件,安裝了XPathhelper后就能輕松獲取HTML元素的XPath表達(dá)式,程序員就再也不需要通過搜索html源代碼,定位一些id去找到對(duì)應(yīng)的位置去解析網(wǎng)頁了。Xpathhelper插件1、下載Xpath插件
/eliasdorneles/xpath_helperXpathhelper插件下載安裝2、解壓至桌面3、打開瀏覽器的“擴(kuò)展程序”,以谷歌瀏覽器為例地址欄輸入:chrome://extensions/Xpathhelper插件下載安裝4、點(diǎn)擊”加載已解壓的擴(kuò)展程序“,找到剛剛解壓的文件夾,確定加載。其它瀏覽器也可在應(yīng)用商店搜索安裝Xpathhelper插件下載安裝Xpathhelper插件使用
第一步:右鍵需要定位的元素,選擇檢查,進(jìn)入”開發(fā)者工具“,定位到源代碼位置
第二步:右鍵要提取的元素或者文本,選擇”Copy“>>“CopyXpath”,獲得該元素的Xpath表達(dá)式復(fù)制結(jié)果://*[@id="syncad_0"]/ul[1]/li[4]/aXpath簡介數(shù)據(jù)采集Xpath簡介
XPath,全稱XMLPathLanguage,即XML路徑語言,它是一門在XML文檔中查找信息的語言。最初是用來搜尋XML文檔的,但同樣適用于HTML文檔的搜索。
所以,在做爬蟲時(shí)可以使用XPath做相應(yīng)的數(shù)據(jù)抽取。
它還提供了超過100個(gè)內(nèi)建函數(shù),用于字符串、數(shù)值、時(shí)間的匹配以及節(jié)點(diǎn)、序列的處理等,幾乎所有想要定位的節(jié)點(diǎn)都可以用XPath來選擇。
官方文檔:/TR/xpath/Xpath常用規(guī)則示例
:
//span[@id="tab-nav"]解釋:
選取當(dāng)前節(jié)點(diǎn)下的后代節(jié)點(diǎn)中,一個(gè)id屬性值為“tab-nav”的span標(biāo)簽節(jié)點(diǎn)。表達(dá)式描述nodename選取此節(jié)點(diǎn)的所有子節(jié)點(diǎn)/從當(dāng)前節(jié)點(diǎn)選區(qū)直接子節(jié)點(diǎn)//從當(dāng)前節(jié)點(diǎn)選取子孫節(jié)點(diǎn).選取當(dāng)前節(jié)點(diǎn)..選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)@選取屬性Xpath通配符使用通配符描述*匹配任何元素節(jié)點(diǎn)。@*匹配任何屬性節(jié)點(diǎn)。node()匹配任何類型的節(jié)點(diǎn)。示例
:
//*[@class="item-color"]/a解釋:
選取文檔中所有包含class=“item-color”的節(jié)點(diǎn)下的直接子節(jié)點(diǎn)超鏈接標(biāo)簽。1.
starts-with函數(shù)例子://div[starts-with(@class,“test”)]2contains函數(shù)例子://div[contains(@id,”test“)]3text()函數(shù)例子://div[@id=“test”]/text()4and例子://div[contains(@id,“test”)andcontains(@id,“title”)]函數(shù)作用starts-with()獲取以xxx開頭的元素contains()獲取包含xxx的元素text()提取節(jié)點(diǎn)的文本and邏輯與的關(guān)系Xpath常用函數(shù)Xpath使用案例1、選取class=“grid_view”的ol節(jié)點(diǎn)//ol[@class=”grid_view”]2、選取li節(jié)點(diǎn)下的所有的后代超鏈接標(biāo)簽節(jié)點(diǎn)//li//a3、提取class=“info”的節(jié)點(diǎn)下后代節(jié)點(diǎn)a標(biāo)簽中的超鏈接屬性值//div[@class=”info”]//a/@href4、提取包含屬性property="v:average"節(jié)點(diǎn)中的文本(
評(píng)分)//span[@property="v:average"]/text()日志數(shù)據(jù)采集-習(xí)題講解數(shù)據(jù)采集1.關(guān)于Filebeat,說法正確的是()。A.Filebeat只能讀取日志文件。B.一個(gè)輸入端只能監(jiān)測(cè)一個(gè)日志文件。C.Filebeat讀取的數(shù)據(jù),可以輸出到多個(gè)輸出端。D.在監(jiān)測(cè)日志文件的時(shí)候,讀取整個(gè)文件數(shù)據(jù)。2.啟動(dòng)Filebeat的命令是()A.
./filebeatB.
./filebeat-eC.
./filebeat-e-fconf.ymlD.
./filebeat-e-cconf.yml3.現(xiàn)需要通過Filebeat監(jiān)測(cè)系統(tǒng)運(yùn)行的所有日志,請(qǐng)?jiān)谌缦屡渲么a中,填補(bǔ)輸入端的配置參數(shù)filebeat.inputs:-type:_____________
enabled:_____________
paths:-/var/log/_____________
logtrue*.log4.Logstash不包含以下哪個(gè)模塊()。A.Inputs。B.Process。C.Filters。D.Outputs。5.logstash的配置文件的后綴名是()A.
.ymlB.
.confC.
.stashD.
.ls6、現(xiàn)需將Filebeat的輸出,作為Logstash組件的輸入,請(qǐng)寫出Logstash配置文件中的配置代碼。input{ beats{ port=>5044
#filebeat作為輸入源 }}Scrapy介紹————數(shù)據(jù)采集Scrapy簡介
Scrapy是基于Python實(shí)現(xiàn)的一個(gè)為了爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架,用途非常廣泛,常應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。
Scrapy使用了Twisted異步網(wǎng)絡(luò)框架來處理網(wǎng)絡(luò)通訊,可以加快我們的下載速度,不用自己去實(shí)現(xiàn)異步框架,并且包含了各種中間件接口,可以靈活的完成各種需求。
用戶只需要定制開發(fā)幾個(gè)模塊就可以輕松的實(shí)現(xiàn)一個(gè)爬蟲,用來抓取網(wǎng)頁內(nèi)容以及各種圖片,非常之方便。核心組件核心組件ScrapyEngine(引擎)Scheduler(調(diào)度器)Spider(爬蟲)ItemPipeline(管道)Downloader(下載器)SpiderMiddlewares(Spider中間件)DownloaderMiddlewares(下載中間件)ScrapyEngine(引擎)
負(fù)責(zé)Spider、ItemPipeline、Downloader、Scheduler中間的通訊,信號(hào)、數(shù)據(jù)傳遞,協(xié)調(diào)各組件工作。Scheduler(調(diào)度器)
負(fù)責(zé)接受引擎發(fā)送過來的Request請(qǐng)求,并按照一定的方式進(jìn)行整理排列,入隊(duì),當(dāng)引擎需要時(shí),將隊(duì)頭請(qǐng)求提交給引擎。Spider(爬蟲)
負(fù)責(zé)處理所有Responses,從中分析提取數(shù)據(jù),獲取Item字段需要的數(shù)據(jù),并將需要跟進(jìn)的URL提交給引擎,再次進(jìn)入Scheduler(調(diào)度器).
ItemPipeline(管道)
負(fù)責(zé)處理Spider中獲取到的Item,并進(jìn)行進(jìn)行后期處理,進(jìn)行詳細(xì)分析、過濾、存儲(chǔ),比如存儲(chǔ)至數(shù)據(jù)庫中。Downloader(下載器)
負(fù)責(zé)下載ScrapyEngine
(引擎)發(fā)送的所有Requests請(qǐng)求,并將其獲取到的Responses交還給引擎,由引擎交給Spider來處理.SpiderMiddlewares(Spider中間件)
一個(gè)可以自定擴(kuò)展和操作引擎和Spider中間通信的功能組件??梢蕴砑哟a來處理發(fā)送給Spiders的response及spider產(chǎn)生的item和request。
DownloaderMiddlewares(下載中間件)
下載器中間件是引擎和下載器之間通信的中間件,在這個(gè)中間件中我們可以設(shè)置代理,更換請(qǐng)求頭等來達(dá)到反復(fù)爬蟲的目的,實(shí)現(xiàn)自定義擴(kuò)展下載功能。工作流程①②③④⑤⑥⑦⑧⑨1、引擎向爬蟲詢問要爬取的第一個(gè)URL地址2、爬蟲告知引擎要爬取的URL地址3、引擎根據(jù)URL,構(gòu)建request請(qǐng)求,并告訴調(diào)度器將待處理的請(qǐng)求加入隊(duì)列,進(jìn)行調(diào)度4、調(diào)度器取出隊(duì)列中對(duì)頭的Requset請(qǐng)求,交給引擎。5、引擎將由調(diào)度器發(fā)來的Request請(qǐng)求發(fā)給下載器6、下載器收到引擎發(fā)的下載請(qǐng)求,完成下載內(nèi)容,并形成Response響應(yīng)反饋給引擎7、引擎收到下載器的響應(yīng)數(shù)據(jù)后,將響應(yīng)數(shù)據(jù)交給爬蟲8、爬蟲收到引擎給的響應(yīng)數(shù)據(jù)后,解析需要的數(shù)據(jù),組成Item數(shù)據(jù),交付給引擎。9、引擎收到爬蟲解析好的Item數(shù)據(jù),傳送給管道,管道收到Item數(shù)據(jù)后,等待命令存儲(chǔ)數(shù)據(jù)。Scrapy環(huán)境搭建————數(shù)據(jù)采集Scrapy安裝在本機(jī)已安裝了python的基礎(chǔ)上1、打開命令提示符窗口:
windows+r,輸入cmd回車進(jìn)入2、有時(shí)pip版本過于老舊不能使用,需要升級(jí)pip版本,輸入命令:
pipinstall--upgradepip3、升級(jí)好pip版本后,輸入命令安裝scrapy
:
pipinstallScrapy此方式可以自動(dòng)安裝,但可能存在安裝失敗或者下載失敗的可能Scrapy安裝
如果使用上述安裝方式出錯(cuò)了,一般是因?yàn)榫W(wǎng)絡(luò)問題導(dǎo)致依賴模塊安裝失敗解決方案如下:
手動(dòng)在官網(wǎng)下載缺失的whl文件:
/~gohlke/pythonlibs/
例如:提示缺失lxml模塊,則在官網(wǎng)頁面中Ctrl+F搜索lxml定位到lxml的whl文件所在位置,根據(jù)本機(jī)電腦環(huán)境,選擇對(duì)應(yīng)的版本下載。下載好對(duì)應(yīng)版本后,通過命令安裝
pipinstall存放路徑\****.whl例如放桌面:pipinstallC:\Users\Administrator\lxml-4.6.2-cp36-cp36m-win_amd64.whl手動(dòng)安裝缺失模塊如何選擇對(duì)應(yīng)的版本下載?以lxml-4.6.2-cp36-cp36m-win_amd64.whl為例4.6.2代表lxml的版本號(hào)cp36代表的是Python3.6,同理cp37就是Python3.7了amd64代表的是Python是64位的,win32就是32位的Python
假如本機(jī)的python版本是Python3.6,64位版本,操作系統(tǒng)是window10,64位操作系統(tǒng)。
則選擇lxml-4.6.2-cp36-cp36m-win_amd64.whl安裝驗(yàn)證打開命令提示符窗口,輸入scrapyversion
如果出現(xiàn)最新的版本號(hào),則表示按照成功。
假設(shè),數(shù)據(jù)爬取項(xiàng)目的存放目錄為:
E:\TeachProjects\PythonProjects\在命令提示符窗口,切換至該目錄下,輸入命令:
scrapystartprojectMyfirstScrapy
通過dir命令,可以看到,在當(dāng)前目錄下已經(jīng)創(chuàng)建了MyfirstScrapy文件夾,該文件夾即是Scrapy工程文件夾,數(shù)據(jù)采集代碼編寫即在此文件夾中實(shí)施。Sc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人心理咨詢與輔導(dǎo)服務(wù)合同3篇
- 2025年度林業(yè)權(quán)屬林權(quán)登記與林業(yè)碳匯項(xiàng)目實(shí)施合同4篇
- 2025年福建貨運(yùn)從業(yè)資格證新政
- 七夕節(jié)趣味活動(dòng)策劃方案
- 二零二五年度高速鐵路鋁合金門窗安全檢測(cè)與安裝合同4篇
- 二零二五年度0號(hào)柴油環(huán)保油品居間服務(wù)合同3篇
- 2025年度個(gè)人房產(chǎn)交易過戶手續(xù)辦理協(xié)議3篇
- 二零二五年度土地租賃及經(jīng)營權(quán)轉(zhuǎn)讓合同樣本-@-1
- 二零二五年度離婚房產(chǎn)分割與子女醫(yī)療費(fèi)用承擔(dān)合同3篇
- 二零二五年度企業(yè)員工培訓(xùn)課程版權(quán)購買協(xié)議4篇
- 2024年社區(qū)警務(wù)規(guī)范考試題庫
- 2024年食用牛脂項(xiàng)目可行性研究報(bào)告
- 2024-2030年中國戶外音箱行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 家務(wù)分工與責(zé)任保證書
- 消防安全隱患等級(jí)
- (新版)國民經(jīng)濟(jì)行業(yè)分類代碼表(八大行業(yè))
- 北京地鐵13號(hào)線
- 2023山東春季高考數(shù)學(xué)真題(含答案)
- 為加入燒火佬協(xié)會(huì)致辭(7篇)
- 職業(yè)衛(wèi)生法律法規(guī)和標(biāo)準(zhǔn)培訓(xùn)課件
- 高二下學(xué)期英語閱讀提升練習(xí)(二)
評(píng)論
0/150
提交評(píng)論