中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何學會Python面向監獄爬蟲

發布時間:2021-10-19 16:50:32 來源:億速云 閱讀:151 作者:iii 欄目:編程語言

這篇文章主要介紹“如何學會Python面向監獄爬蟲”,在日常操作中,相信很多人在如何學會Python面向監獄爬蟲問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何學會Python面向監獄爬蟲”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

網絡爬蟲簡單來說,就是從網絡中批量獲取自己想要的數據。

網上爬取數據有兩種方法可以實現:

  •  使用官方 API

  •  網絡抓取

API (應用程序接口)是為了以標準的方式在不同的系統之間交換數據。但是,大多數時候,網站所有者并不提供任何 API。在這種情況下,我們只能使用 web 抓取提取數據了。

基本上,每個 web 頁面都以 HTML 格式從服務器返回,這意味著我們的實際數據被很好地包裝在 HTML 元素中。這使得檢索特定數據的整個過程非常簡單和直接。

本教程將是一個自始至終的指南,讓你可以盡可能簡單的使用 Python學習爬蟲。首先,我將向你介紹一些基本的示例,讓你熟悉 web 抓取。稍后,我們將使用這些知識從 Livescore.cz 中提取足球比賽的數據。

開始

為了讓我們開始,你需要啟動一個新的 Python3 項目,并安裝 Scrapy (一個用于 Python 的 web 爬蟲庫)。我在本教程中使用了 pipenv,但是你也可以使用 pip 和 venv,或 conda。

pipenv install scrapy # Pipenv 安裝 scrap

現在,你已經有了 Scrapy,但是你仍然需要創建一個新的 web 抓取項目,為此 Scrapy 提供了一個命令行,可以為我們完成這項工作。

現在,讓我們使用 scrapy clii 創建一個名為 web _ scraper 的新項目。

如果你像我一樣使用 pipenv,請使用:

pipenv run scrapy startproject web_scraper

或者在你自己的虛擬環境中,使用:

scrapy startproject web_scraper

這將在工作目錄中創建一個基本項目,其結構如下:

如何學會Python面向監獄爬蟲

01. 使用 XPath 

我們將從一個非常簡單的例子開始我們的網絡抓取教程。首先,我們將在 HTML 中定位 Live Code Stream 網站的標志。正如我們所知,它只是一個文本,而不是一個圖像,所以我們將簡單地提取這個文本。

代碼

為了開始,我們需要為這個項目創建一個新的爬取器。我們可以通過創建一個新文件或使用 CLI 來實現這一點。

因為我們已經知道我們需要的代碼,所以我們將在這個路徑 /web_scraper/spiders/live _ code _ stream. py 上創建一個新的 Python 文件

下面是這個文件中的代碼。

如何學會Python面向監獄爬蟲

代碼解釋

  •  首先,我們導入了 Scrapy 庫,因為我們需要它的功能來創建一個Python web spider。這個爬蟲隨后將用于抓取指定的網站和提取有用的信息。

  •  我們創建了一個類,并將其命名為LiveCodeStreamSpider。基本上,它繼承了 scrapy。這就是為什么我們把它作為一個參數來傳遞。

  •  現在,重要的一步是使用一個名為 name 的變量為你的 spider 定義一個唯一的名稱。請記住,不允許使用現有 spider 的名稱。同樣,不能使用此名稱創建新的爬行器。它必須在整個項目中是獨一無二的。

  •  之后,我們使用 start_urls list 傳遞網站 URL 。

  •   parse() 的方法,該方法將在 HTML 代碼中定位標記并提取其文本。在 Scrapy,有兩種方法可以在源代碼中找到 HTML 元素。這些都在下面提到:

        CSS 和 XPath

你甚至可以使用一些外部庫,比如 BeautifulSoup 和 lxml。但是,對于這個例子,我們使用了 XPath。

一個快速確定任何 HTML 元素的 XPath 的方法是在 Chrome Devtools 中打開它。現在,只需右鍵單擊該元素的 HTML 代碼,將鼠標光標懸停在剛剛出現的彈出菜單中的“復制”上。最后,單擊“ Copy XPath”菜單項。

請看下面的截圖,以便更好地理解它。

如何學會Python面向監獄爬蟲

順便說一下,我在元素的實際 XPath 之后使用了/text () ,只從該元素中檢索文本,而不是從完整的元素代碼中檢索。

注意:不可對上面提到的變量、列表或函數使用任何其他名稱。這些名稱是在 Scrapy 圖書館預先定義的。因此,你必須實事求是地使用它們。否則,程序將無法正常工作。

運行爬蟲

因為我們已經在命令提示符下的 web_scraper 文件夾中了。讓我們執行 spider 并使用下面的代碼在新文件 lcs.json 中填充結果。我們得到的結果將使用 JSON 格式進行良好的結構化。

pipenv run scrapy crawl lcs -o lcs.json scrapy crawl lcs -o lcs.json

結果

當執行上面的代碼時,我們會在項目文件夾中看到一個新的文件 lcs.json。

下面是這個文件的內容。

[ {"logo": "Live Code Stream"} ]

02. 使用 CSS

我們大多數人都喜歡體育運動,比如足球。

世界各地經常組織足球比賽。有幾個網站在比賽進行時提供比賽結果的實時反饋。但是,大多數這些網站并沒有提供任何官方的 API。

反過來,它為我們創造了一個機會,使用我們的網絡抓取技能和提取有意義的信息,直接抓取他們的網站。

在他們的主頁上,他們很好地展示了今天(你訪問網站的日期)將要進行的比賽和比賽。

我們可以檢索如下信息

  •  比賽名稱

  •  比賽時間

  •  A隊隊名

  •  A隊進球數

  •  B隊隊名

  •  B隊進球數

  •  etc. 等等

在我們的代碼示例中,我們將提取今天有匹配的比賽名稱。

代碼

讓我們在項目中創建一個新的 spider 來檢索比賽名稱,我將項目命名為livescore_t.py

下面是你在 livescore _ t.py 中需要輸入的代碼:

如何學會Python面向監獄爬蟲

代碼解釋

  •  像往常一樣,導入 Scrapy

  •  創建一個類,該類繼承 scrapy.Spider

  •  給我們的爬蟲取一個獨一無二的名字 LiveScoreT 

  •  提供 livescore.cz 的URL

  最后,用 parse() 函數遍歷所有匹配的包含競賽名稱的元素,并使用 yield 將其連接在一起。最后,我們會收到今天有比賽的所有比賽名稱。需要注意的一點是,這次我使用了 CSS 而不是XPath。

運行

是時候看看我們的爬蟲是如何行動的了。運行下面的命令讓 spider 到達 Livescore.cz 網站的主頁。然后,web 抓取結果將被添加到一個名為 ls _ t.json 的新文件中。

pipenv run scrapy crawl LiveScoreT -o ls_t.json

結果

這是我們的網絡爬蟲在2020年11月18日從 Livescore.cz 中提取的內容。記住,輸出可能每天都在變化。

如何學會Python面向監獄爬蟲

03. 一個更高級的例子

在本節中,我們將不僅僅是檢索錦標賽名稱,而是進入下一個階段,獲取錦標賽及其比賽的完整細節。

在 /web _ scraper/web _ scraper/spider/ 中創建一個新文件,并將其命名為 livescore.py。

如何學會Python面向監獄爬蟲

代碼解釋

此文件的代碼結構與前面的示例相同。在這里,我們只是用一個新的功能更新了 parse () 方法。

基本上,我們從頁面中提取了所有的 HTML <tr> </tr> 元素。然后,我們通過循環找出這是一個錦標賽或比賽。如果它是一個錦標賽,我們提取它的名字。在比賽的情況下,我們提取了它的“時間”、“狀態”和“兩支球隊的名稱和得分”

運行

在控制臺鍵入以下命令并執行它

pipenv run scrapy crawl LiveScore -o ls.json

結果

下面是已經檢索到的一些樣本:

如何學會Python面向監獄爬蟲

現在有了這些數據,我們可以做任何我們想做的事情,比如用它來訓練我們自己的神經網絡來預測未來的游戲。

到此,關于“如何學會Python面向監獄爬蟲”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

尉犁县| 孟州市| 钟祥市| 汉沽区| 绥阳县| 清远市| 淅川县| 吕梁市| 布尔津县| 咸宁市| 郸城县| 裕民县| 米脂县| 林州市| 仲巴县| 襄汾县| 确山县| 上林县| 剑河县| 霍城县| 江阴市| 凤凰县| 高要市| 丹江口市| 渝中区| 越西县| 宁南县| 井冈山市| 巴南区| 昆山市| 宣化县| 三江| 旬邑县| 荥经县| 修武县| 滨海县| 天水市| 兴仁县| 莫力| 尚志市| 麻江县|