一看就明白的爬蟲入門講解:基礎(chǔ)理論篇(上篇

2020-09-26    分類: 網(wǎng)站建設(shè)

文/諸葛ioCEO

關(guān)于爬蟲內(nèi)容的分享,我會(huì)分成兩篇,六個(gè)部分來分享,分別是:

  1. 我們的目的是什么
  2. 內(nèi)容從何而來
  3. 了解網(wǎng)絡(luò)請(qǐng)求
  4. 一些常見的限制方式
  5. 嘗試解決問題的思路
  6. 效率問題的取舍

本文先聊聊前三個(gè)部分。

一、我們的目的是什么

一般來講對(duì)我們而言需要抓取的是某個(gè)網(wǎng)站或者某個(gè)應(yīng)用的內(nèi)容,提取有用的價(jià)值,內(nèi)容一般分為兩部分,非結(jié)構(gòu)化的文本,或者結(jié)構(gòu)化的文本。

關(guān)于非結(jié)構(gòu)化的數(shù)據(jù)

1.1 HTML文本(包含java代碼)

HTML文本基本上是傳統(tǒng)爬蟲過程中最常見的,也就是大多數(shù)時(shí)候會(huì)遇到的情況,例如抓取一個(gè)網(wǎng)頁(yè),得到的是HTML,然后需要解析一些常見的元素,提取一些關(guān)鍵的信息。HTML其實(shí)理應(yīng)屬于結(jié)構(gòu)化的文本組織,但是又因?yàn)橐话阄覀冃枰年P(guān)鍵信息并非直接可以得到,需要進(jìn)行對(duì)HTML的解析查找,甚至一些字符串操作才能得到,所以還是歸類于非結(jié)構(gòu)化的數(shù)據(jù)處理中。

常見解析方式如下:

CSS選擇器

現(xiàn)在的網(wǎng)頁(yè)樣式比較多,所以一般的網(wǎng)頁(yè)都會(huì)有一些CSS的定位,例如class,id等等,或者我們根據(jù)常見的節(jié)點(diǎn)路徑進(jìn)行定位,例如騰訊首頁(yè)的財(cái)經(jīng)部分:

這里id就為finance,我們用css選擇器,就是"#finance"就得到了財(cái)經(jīng)這一塊區(qū)域的html,同理,可以根據(jù)特定的css選擇器可以獲取其他的內(nèi)容。

XPATH

XPATH是一種頁(yè)面元素的路徑選擇方法,利用chrome可以快速得到,如:

copy XPATH 就能得到——//*[@id="finance"]

正則表達(dá)式

正則表達(dá)式,用標(biāo)準(zhǔn)正則解析,一般會(huì)把HTML當(dāng)做普通文本,用指定格式匹配當(dāng)相關(guān)文本,適合小片段文本,或者某一串字符,或者HTML包含java的代碼,無法用CSS選擇器或者XPATH。

字符串分隔

同正則表達(dá)式,更為偷懶的方法,不建議使用。

1.2 一段文本

例如一篇文章,或者一句話,我們的初衷是提取有效信息,所以如果是滯后處理,可以直接存儲(chǔ),如果是需要實(shí)時(shí)提取有用信息,常見的處理方式如下:

分詞

根據(jù)抓取的網(wǎng)站類型,使用不同詞庫(kù),進(jìn)行基本的分詞,然后變成詞頻統(tǒng)計(jì),類似于向量的表示,詞為方向,詞頻為長(zhǎng)度。

NLP

自然語言處理,進(jìn)行語義分析,用結(jié)果表示,例如正負(fù)面等。

關(guān)于結(jié)構(gòu)化的數(shù)據(jù)結(jié)構(gòu)化的數(shù)據(jù)是最好處理,一般都是類似JSON格式的字符串,直接解析JSON數(shù)據(jù)就可以了,提取JSON的關(guān)鍵字段即可

二、內(nèi)容從何而來

過去我們常需要獲取的內(nèi)容主要來源于網(wǎng)頁(yè),一般來講,我們決定進(jìn)行抓取的時(shí)候,都是網(wǎng)頁(yè)上可看到的內(nèi)容,但是隨著這幾年移動(dòng)互聯(lián)網(wǎng)的發(fā)展,我們也發(fā)現(xiàn)越來越多的內(nèi)容會(huì)來源于移動(dòng)app,所以爬蟲就不止局限于一定要抓取解析網(wǎng)頁(yè),還有就是模擬移動(dòng)app的網(wǎng)絡(luò)請(qǐng)求進(jìn)行抓取,所以這一部分我會(huì)分兩部分進(jìn)行說明。

1 網(wǎng)頁(yè)內(nèi)容

網(wǎng)頁(yè)內(nèi)容一般就是指我們最終在網(wǎng)頁(yè)上看到的內(nèi)容,但是這個(gè)過程其實(shí)并不是網(wǎng)頁(yè)的代碼里面直接包含內(nèi)容這么簡(jiǎn)單,所以對(duì)于很多新人而言,會(huì)遇到很多問題,比如:

明明在頁(yè)面用Chrome或者Firefox進(jìn)行審查元素時(shí)能看到某個(gè)HTML標(biāo)簽下包含內(nèi)容,但是抓取的時(shí)候?yàn)榭铡?/p>

很多內(nèi)容一定要在頁(yè)面上點(diǎn)擊某個(gè)按鈕或者進(jìn)行某個(gè)交互操作才能顯示出來。

所以對(duì)于很多新人的做法是用某個(gè)語言別人模擬瀏覽器操作的庫(kù),其實(shí)就是調(diào)用本地瀏覽器或者是包含了一些執(zhí)行java的引擎來進(jìn)行模擬操作抓取數(shù)據(jù),但是這種做法顯然對(duì)于想要大量抓取數(shù)據(jù)的情況下是效率非常低下,并且對(duì)于技術(shù)人員本身而言也相當(dāng)于在用一個(gè)盒子,那么對(duì)于這些內(nèi)容到底是怎么顯示在網(wǎng)頁(yè)上的呢?

當(dāng)前文章:一看就明白的爬蟲入門講解:基礎(chǔ)理論篇(上篇
文章地址:http://muchs.cn/news/86715.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站制作網(wǎng)站維護(hù)、App設(shè)計(jì)、虛擬主機(jī)、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名