日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

作者 | 喵叔

責(zé)編 | 胡巍巍

出品 | CSDN(ID:CSDNnews)

爬蟲應(yīng)用的廣泛,例如搜索引擎、采集數(shù)據(jù)、廣告過濾、數(shù)據(jù)分析等。當(dāng)我們對少數(shù)網(wǎng)站內(nèi)容進(jìn)行爬取時寫多個爬蟲還是有可能的,但是對于需要爬取多個網(wǎng)站內(nèi)容的項目來說是不可能編寫多個爬蟲的,這個時候我們就需要智能爬蟲。

智能爬蟲目前有三種:

1. 基于網(wǎng)頁內(nèi)容的爬蟲

當(dāng)網(wǎng)頁含有大量需要提取的信息時,我們就需要用到基于網(wǎng)頁內(nèi)容的爬蟲。該爬蟲會將 html 視為文本并利用 NLP 技術(shù)進(jìn)行處理。

雖然說這種基于網(wǎng)頁內(nèi)容的爬蟲可以減少爬蟲的數(shù)量,但是需要人工參與進(jìn)行訓(xùn)練 NLP 模型,沒有 AI 開發(fā)經(jīng)驗或 AI 開發(fā)經(jīng)驗很少的程序員很難寫出這類爬蟲,并且爬蟲爬取時間很長效率還很低。

2. 基于DOM結(jié)構(gòu)的爬蟲

基于DOM結(jié)構(gòu)的爬蟲相對來說比較簡單,就是將 HTML 解析為 DOM 樹,然后根據(jù)語法結(jié)構(gòu)進(jìn)行提取信息,這種方法效率和準(zhǔn)確性都比前一種方法高。

3. 基于視覺的爬蟲

基于視覺的爬蟲的開發(fā)難度同樣很高,它是通過瀏覽器接口或者瀏覽器內(nèi)核對目標(biāo)頁面進(jìn)行袁燃,然后基于網(wǎng)頁的視覺規(guī)律提取網(wǎng)頁數(shù)據(jù)。這種爬蟲需要利用神經(jīng)網(wǎng)絡(luò)中的 CNN 卷積神經(jīng)網(wǎng)絡(luò)獲取頁面特定區(qū)域的內(nèi)容。

目前比較常用的只能爬蟲框架是 Readability 和 Newspaper 。下面我們就來看一下這兩個框架的講解。

1.Newspaper

Newspaper 是一個利用 NLP 的智能爬蟲框架,可以從頁面中提取出很多內(nèi)容。安裝這個爬蟲框架需要首先安裝依賴:

shell

sudo apt-get install libxml2-dev libxslt-dev

sudo apt-get install libjpeg-dev zlib1g-dev libpng12-dev

在上述安裝中如果出現(xiàn) libpng12-dev 出現(xiàn)錯誤,就需要安裝 libpng-dev 。

接下來就需要安裝 NLP 語料庫:

shell

curl https://raw.githubusercontent.com/codelucas/newspaper/master/download_corpora.py | Python3

最后我們安裝 Newspaper 爬蟲框架:

shell

pip install newspaper3k

下面我們就通過一個例子來看一下 newspaper 框架怎么使用:

python

from newspaper import Article

url = 'https://www.ithome.com/0/445/071.htm'

article = Article(url, language='zh')

article.download

article.parse

print('作者', article.authors)

print('標(biāo)題', article.title)

print('發(fā)布日期', article.publish_date)

print('正文', article.text)

article.nlp

print('關(guān)鍵詞', article.keywords)

print('摘要', article.summary)

上述代碼中 language='zh' 告訴 newspaper 我們抓取的是中文網(wǎng)頁。newspaper 會首先下載頁面,然后利用 parse 方法解析頁面。頁面解析后就可以獲取到作者、標(biāo)題、發(fā)布日期等內(nèi)容,如果要提取關(guān)鍵字和摘要,就可以使用 nlp 方法。

我利用多個不同網(wǎng)站的 URL 進(jìn)行測試發(fā)現(xiàn),部分內(nèi)容的作者和發(fā)布日期會解析不出來,有些內(nèi)容甚至獲取的不正確,但是對于英文內(nèi)容還是識別率很高的。如果要提高對中文的識別率,可以更換 newspaper 中的使用的分詞庫(目前 newspaper 使用的分詞庫是結(jié)巴分詞),或者改變所使用的內(nèi)容識別模型。

2.Readability

Readability 是一個爬蟲算法,它在 python 中的名稱叫 readability-lxml 同樣我們也可以通過 pip 命令來安裝:

shell

pip install readability-lxml

安裝完之后我們只需導(dǎo)入 readability 即可,我們來看一下例子:

python

import requests

from readability import Document

url = "https://www.ithome.com/0/444/503.htm"

html = requests.get(url).content

doc = Document(html)

print("title:", doc.title)

print("content:", doc.summary(html_partial=True))

這里我們使用 requests 庫請求頁面,然后將獲取到的 html 內(nèi)容傳遞給 readability 中的 Document 類,接著我們調(diào)用了 title 和 summary 方法來獲取標(biāo)題和正文。這樣我們就獲取到了標(biāo)題和正文。

summary 方法中的 html_partial 意思是石否過濾掉返回結(jié)果中的 html 和 body 標(biāo)簽。readability 所返回的正文內(nèi)容會有很大的可能包含頁面 html 元素,這就需要我們進(jìn)行二次過濾或提取。

readability 獲取 title 的方法很簡單,就是直接獲取頁面 title 元素中的內(nèi)容,但是獲取正文的方法就麻煩了,它是給每個節(jié)點打分,比如遇到 article 元素就會加上 5 分(源碼中就是加上5 分),因為 article 元素有可能是正文內(nèi)容或正文內(nèi)容的一部分。

如果遇到 ol 元素就意味著它有可能不是正文內(nèi)容,因此減掉3分,最后得分最高的那個元素就很有可能是正文或者正文內(nèi)容。

當(dāng)然 readability 還存在利用正則表達(dá)式來進(jìn)行打分的方式,這種方式的效果和上一種方式的效果幾乎一樣。簡單點說 readability 的原理就是根據(jù)經(jīng)驗積累設(shè)置出的模型,分?jǐn)?shù)也是根據(jù)敬仰不斷優(yōu)化得到的結(jié)果,因此這個框架的準(zhǔn)確的不是很高,但是可以解放一些人手。

3.總結(jié)和風(fēng)險預(yù)防

我們講解了常見的三種智能爬蟲類型,還通過代碼的形式學(xué)習(xí)了 newspaper 和 readability 的使用方法和原理,我們可以利用這篇文章學(xué)到的內(nèi)容來編寫自己的爬蟲,同時對爬蟲的開發(fā)有了更進(jìn)一步的了解。

爬蟲目前處于法律的灰色地帶,用好了會給個人/公司帶來很大的收益,反之會給個人/公司帶來法律風(fēng)險。因此我們在使用爬蟲的時候必須要遵循目標(biāo)網(wǎng)站 robots.txt 文件中的規(guī)定,同時也要控制爬蟲對目標(biāo)網(wǎng)站的爬取速度和頻率,防止對目標(biāo)網(wǎng)站造成壓力,甚至破壞數(shù)據(jù)信息。

作者簡介:朱鋼,筆名喵叔,CSDN博客專家,.NET高級開發(fā)工程師,7年一線開發(fā)經(jīng)驗,參與過電子政務(wù)系統(tǒng)和AI客服系統(tǒng)的開發(fā),以及互聯(lián)網(wǎng)招聘網(wǎng)站的架構(gòu)設(shè)計,目前就職于北京恒創(chuàng)融慧科技發(fā)展有限公司,從事企業(yè)級安全監(jiān)控系統(tǒng)的開發(fā)。

【END】

分享到:
標(biāo)簽:爬蟲 Python
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定