新聞中心
網(wǎng)絡(luò)爬蟲簡單來說,就是從網(wǎng)絡(luò)中批量獲取自己想要的數(shù)據(jù)。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),福清企業(yè)網(wǎng)站建設(shè),福清品牌網(wǎng)站建設(shè),網(wǎng)站定制,福清網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,福清網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
網(wǎng)上爬取數(shù)據(jù)有兩種方法可以實現(xiàn):
- 使用官方 API
- 網(wǎng)絡(luò)抓取
API (應(yīng)用程序接口)是為了以標準的方式在不同的系統(tǒng)之間交換數(shù)據(jù)。但是,大多數(shù)時候,網(wǎng)站所有者并不提供任何 API。在這種情況下,我們只能使用 web 抓取提取數(shù)據(jù)了。
基本上,每個 web 頁面都以 HTML 格式從服務(wù)器返回,這意味著我們的實際數(shù)據(jù)被很好地包裝在 HTML 元素中。這使得檢索特定數(shù)據(jù)的整個過程非常簡單和直接。
本教程將是一個自始至終的指南,讓你可以盡可能簡單的使用 Python學習爬蟲。首先,我將向你介紹一些基本的示例,讓你熟悉 web 抓取。稍后,我們將使用這些知識從 Livescore.cz 中提取足球比賽的數(shù)據(jù)。
開始
為了讓我們開始,你需要啟動一個新的 Python3 項目,并安裝 Scrapy (一個用于 Python 的 web 爬蟲庫)。我在本教程中使用了 pipenv,但是你也可以使用 pip 和 venv,或 conda。
- pipenv install scrapy # Pipenv 安裝 scrap
現(xiàn)在,你已經(jīng)有了 Scrapy,但是你仍然需要創(chuàng)建一個新的 web 抓取項目,為此 Scrapy 提供了一個命令行,可以為我們完成這項工作。
現(xiàn)在,讓我們使用 scrapy clii 創(chuàng)建一個名為 web _ scraper 的新項目。
如果你像我一樣使用 pipenv,請使用:
- pipenv run scrapy startproject web_scraper
或者在你自己的虛擬環(huán)境中,使用:
- scrapy startproject web_scraper
這將在工作目錄中創(chuàng)建一個基本項目,其結(jié)構(gòu)如下:
01. 使用 XPath
我們將從一個非常簡單的例子開始我們的網(wǎng)絡(luò)抓取教程。首先,我們將在 HTML 中定位 Live Code Stream 網(wǎng)站的標志。正如我們所知,它只是一個文本,而不是一個圖像,所以我們將簡單地提取這個文本。
代碼
為了開始,我們需要為這個項目創(chuàng)建一個新的爬取器。我們可以通過創(chuàng)建一個新文件或使用 CLI 來實現(xiàn)這一點。
因為我們已經(jīng)知道我們需要的代碼,所以我們將在這個路徑 /web_scraper/spiders/live _ code _ stream. py 上創(chuàng)建一個新的 Python 文件
下面是這個文件中的代碼。
代碼解釋
- 首先,我們導(dǎo)入了 Scrapy 庫,因為我們需要它的功能來創(chuàng)建一個Python web spider。這個爬蟲隨后將用于抓取指定的網(wǎng)站和提取有用的信息。
- 我們創(chuàng)建了一個類,并將其命名為LiveCodeStreamSpider?;旧希^承了 scrapy。這就是為什么我們把它作為一個參數(shù)來傳遞。
- 現(xiàn)在,重要的一步是使用一個名為 name 的變量為你的 spider 定義一個唯一的名稱。請記住,不允許使用現(xiàn)有 spider 的名稱。同樣,不能使用此名稱創(chuàng)建新的爬行器。它必須在整個項目中是獨一無二的。
- 之后,我們使用 start_urls list 傳遞網(wǎng)站 URL 。
- parse() 的方法,該方法將在 HTML 代碼中定位標記并提取其文本。在 Scrapy,有兩種方法可以在源代碼中找到 HTML 元素。這些都在下面提到:
CSS 和 XPath
你甚至可以使用一些外部庫,比如 BeautifulSoup 和 lxml。但是,對于這個例子,我們使用了 XPath。
一個快速確定任何 HTML 元素的 XPath 的方法是在 Chrome Devtools 中打開它。現(xiàn)在,只需右鍵單擊該元素的 HTML 代碼,將鼠標光標懸停在剛剛出現(xiàn)的彈出菜單中的“復(fù)制”上。最后,單擊“ Copy XPath”菜單項。
請看下面的截圖,以便更好地理解它。
順便說一下,我在元素的實際 XPath 之后使用了/text () ,只從該元素中檢索文本,而不是從完整的元素代碼中檢索。
注意:不可對上面提到的變量、列表或函數(shù)使用任何其他名稱。這些名稱是在 Scrapy 圖書館預(yù)先定義的。因此,你必須實事求是地使用它們。否則,程序?qū)o法正常工作。
運行爬蟲
因為我們已經(jīng)在命令提示符下的 web_scraper 文件夾中了。讓我們執(zhí)行 spider 并使用下面的代碼在新文件 lcs.json 中填充結(jié)果。我們得到的結(jié)果將使用 JSON 格式進行良好的結(jié)構(gòu)化。
- pipenv run scrapy crawl lcs -o lcs.json scrapy crawl lcs -o lcs.json
結(jié)果
當執(zhí)行上面的代碼時,我們會在項目文件夾中看到一個新的文件 lcs.json。
下面是這個文件的內(nèi)容。
- [ {"logo": "Live Code Stream"} ]
02. 使用 CSS
我們大多數(shù)人都喜歡體育運動,比如足球。
世界各地經(jīng)常組織足球比賽。有幾個網(wǎng)站在比賽進行時提供比賽結(jié)果的實時反饋。但是,大多數(shù)這些網(wǎng)站并沒有提供任何官方的 API。
反過來,它為我們創(chuàng)造了一個機會,使用我們的網(wǎng)絡(luò)抓取技能和提取有意義的信息,直接抓取他們的網(wǎng)站。
在他們的主頁上,他們很好地展示了今天(你訪問網(wǎng)站的日期)將要進行的比賽和比賽。
我們可以檢索如下信息
- 比賽名稱
- 比賽時間
- A隊隊名
- A隊進球數(shù)
- B隊隊名
- B隊進球數(shù)
- etc. 等等
在我們的代碼示例中,我們將提取今天有匹配的比賽名稱。
代碼
讓我們在項目中創(chuàng)建一個新的 spider 來檢索比賽名稱,我將項目命名為livescore_t.py
下面是你在 livescore _ t.py 中需要輸入的代碼:
代碼解釋
- 像往常一樣,導(dǎo)入 Scrapy
- 創(chuàng)建一個類,該類繼承 scrapy.Spider
- 給我們的爬蟲取一個獨一無二的名字 LiveScoreT
- 提供 livescore.cz 的URL
最后,用 parse() 函數(shù)遍歷所有匹配的包含競賽名稱的元素,并使用 yield 將其連接在一起。最后,我們會收到今天有比賽的所有比賽名稱。需要注意的一點是,這次我使用了 CSS 而不是XPath。
運行
是時候看看我們的爬蟲是如何行動的了。運行下面的命令讓 spider 到達 Livescore.cz 網(wǎng)站的主頁。然后,web 抓取結(jié)果將被添加到一個名為 ls _ t.json 的新文件中。
- pipenv run scrapy crawl LiveScoreT -o ls_t.json
結(jié)果
這是我們的網(wǎng)絡(luò)爬蟲在2020年11月18日從 Livescore.cz 中提取的內(nèi)容。記住,輸出可能每天都在變化。
03. 一個更高級的例子
在本節(jié)中,我們將不僅僅是檢索錦標賽名稱,而是進入下一個階段,獲取錦標賽及其比賽的完整細節(jié)。
在 /web _ scraper/web _ scraper/spider/ 中創(chuàng)建一個新文件,并將其命名為 livescore.py。
代碼解釋
此文件的代碼結(jié)構(gòu)與前面的示例相同。在這里,我們只是用一個新的功能更新了 parse () 方法。
基本上,我們從頁面中提取了所有的 HTML
運行
在控制臺鍵入以下命令并執(zhí)行它
- pipenv run scrapy crawl LiveScore -o ls.json
結(jié)果
下面是已經(jīng)檢索到的一些樣本:
現(xiàn)在有了這些數(shù)據(jù),我們可以做任何我們想做的事情,比如用它來訓(xùn)練我們自己的神經(jīng)網(wǎng)絡(luò)來預(yù)測未來的游戲。
04. 總結(jié)
數(shù)據(jù)分析師經(jīng)常使用網(wǎng)絡(luò)抓取,因為它可以幫助他們收集數(shù)據(jù)來預(yù)測未來。類似地,企業(yè)使用它從網(wǎng)頁中提取電子郵件,因為這是一種有效的方式產(chǎn)生領(lǐng)導(dǎo)。我們甚至可以用它來監(jiān)控產(chǎn)品的價格。
換句話說,web 抓取有許多用例,Python完全有能力做到這一點。
那么,你還在等什么呢? 現(xiàn)在就試著抓取你最喜歡的網(wǎng)站吧。
網(wǎng)頁標題:謹慎使用!從入門到精通,一文帶你學會Python面向監(jiān)獄爬蟲
網(wǎng)頁鏈接:http://www.dlmjj.cn/article/cdgiiic.html


咨詢
建站咨詢
