首頁 後端開發 Python教學 Python爬蟲框架Scrapy的使用教學課程

Python爬蟲框架Scrapy的使用教學課程

Oct 19, 2018 pm 04:02 PM
python

這篇文章帶給大家的內容是關於Python爬蟲框架Scrapy的使用教程,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

大家好,這篇文章我們來看看強大的Python爬蟲框架Scrapy。 Scrapy是一個使用簡單,強大的非同步爬蟲框架,我們先來看看他的安裝。

Scrapy的安裝

Scrapy的安裝是很麻煩的,對於一些想使用Scrapy的人來說,它的安裝常常讓很多人死在半路。在此我將我的安裝過程和網路上整理的安裝方法,分享給大家,希望大家能夠安裝順利。

Windows安裝

開始之前,我們要確定自己安裝了Python,本篇文章我們以Python3.5為例。 Scrapy有很多依賴的套件,我們來一一安裝。

首先,使用pip -v,查看pip是否安裝正常,如果正常,那麼我們進行下一步;

pip install wheel這個包我們之前的文章介紹過,安裝好他我們就可以安裝一些wheel件;

lxml安裝,之前的文章說過他的安裝,那我們這裡在重新整理一下。 whl文件地址:here。找到自己對應版本的文件,下載好後,找到文件位置,右鍵點選檔案屬性,點選安全標籤,複製他的所在路徑。開啟管理員工具(cmd),pip install <貼上whl路徑>;

PyOpenssl 的whl檔案位址:here。點擊下載,whl檔案安裝方式同上;

Twisted框架這個框架是一個非同步網路函式庫,是Scrapy的核心。 whl檔案位址:here;

Pywin32這是一個Pywin32相容的函式庫,下載位址:here,選好版本進行下載;

如果上面的函式庫全都安裝好了,那麼我們就可以安裝我們的Scrapy了,pip install scrapy

是不是很麻煩呢,如果大家不喜歡折騰,那麼在Windows下也可以很方便的安裝。那就要使用我們之前提到的Anaconda了。具體安裝大家自己找找,或是在之前的文章找。那麼他的安裝Scrapy只需要一行:

conda install scrapy

#Linux安裝

Linux系統安裝起來就要簡單一點:

#sudo apt- get install build-essential python3-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev

#Mac OS安裝

我們需要先安裝一些C 的依賴函式庫,xcode -select --install

需要安裝命令列開發工具,我們點擊安裝。安裝完成,那麼依賴函式庫也就安裝完成了。

然後我們直接使用pip安裝pip install scrapy

以上,我們的Scrapy函式庫的安裝基本上就解決了。

Scrapy的基本使用

Scrapy的中文文件位址:here

Scrapy是一個為了爬取網站數據,提取結構性數據而寫的應用程式框架。可以應用在包括資料挖掘,資訊處理或儲存歷史資料等一系列的程序中。

他的基本項目流程為:

建立一個Scrapy項目

定義提取的Item

#寫一個爬取網站的spider並提取Item

寫Item Pipeline來儲存提取到的Item(即資料)

而一般我們的爬蟲流程為:

抓取索引頁:請求索引頁的URL並且得到來源程式碼,進行下一步分析;

獲取內容和下一頁鏈接:分析源代碼,提取索引頁數據,並且獲取下一頁鏈接,進行下一步抓取;

##翻頁爬取:請求下一頁信息,分析內容並請求在下一頁鏈接;

保存爬取結果:將爬取結果保存為特定格式和文本,或者保存數據庫。

我們一步一步來看看如何使用。

建立專案

在開始爬取之前,您必須建立一個新的Scrapy專案。進入您打算儲存程式碼的目錄中,執行下列指令(以知乎日報為例):

scrapy startproject zhihurb

該指令將會建立包含下列內容的zhihu 目錄:

zhihurb/

scrapy.cfg

zhihurb/

    __init__.py

    items.py

    pipelines.py

    settings.py

    spiders/

        __init__.py

        ...
登入後複製
這些檔案分別是:

scrapy.cfg: 專案的設定檔zhihurb/: 該專案的python模組。之後您將在此加入程式碼。 zhihurb/items.py: 專案中的item檔.zhihurb/pipelines.py: 專案中的pipelines檔案.zhihurb/settings.py: 專案的設定檔.zhihurb/spiders/: 放置spider程式碼的目錄.

定義Item

這一步是定義我們需要獲取到的數據信息,例如我們需要獲得網站裡的一些url,網站文章的內容,文章的作者等。這一步定義的地方就在我們的items.py檔。

import scrapy

class ZhihuItem(scrapy.Item):

name = scrapy.Field()

article = scrapy.Field()
登入後複製
寫Spider

這一步就是寫我們最熟悉的爬蟲了,而我們的Scrapy框架可以讓我們不需要去考慮實作的方法,只要寫出爬取的邏輯就可以了。

首先我們需要在 spiders/ 資料夾下建立我們的爬蟲文件,例如就叫spider.py。寫爬蟲前,我們需要先定義一些內容。我們以知乎日報為例:https://daily.zhihu.com/

from scrapy import Spider

class ZhihuSpider(Spider):

name = "zhihu"

allowed_domains = ["zhihu.com"]

start_urls = ['https://daily.zhihu.com/']
登入後複製

这里我们定义了什么呢?首先我们导入了Scrapy的Spider组件。然后创建一个爬虫类,在类里我们定义了我们的爬虫名称:zhihu(注意:爬虫名称独一无二的,是不可以和别的爬虫重复的)。还定义了一个网址范围,和一个起始 url 列表,说明起始 url 可以是多个。

然后我们定义一个解析函数:

def parse(self, response):

print(response.text)
登入後複製

我们直接打印一下,看看这个解析函数是什么。

运行爬虫

scrapy crawl zhihu

由于Scrapy是不支持在IDE中执行,所以我们必须在命令行里执行命令,我们要确定是不是cd到爬虫目录下。然后执行,这里的命令顾名思义,crawl是蜘蛛的意思,zhihu就是我们定义的爬虫名称了。

查看输出,我们先看到的是一些爬虫类的输出,可以看到输出的log中包含定义在 start_urls 的初始URL,并且与spider中是一一对应的。我们接着可以看到打印出了网页源代码。可是我们似乎并没有做什么,就得到了网页的源码,这是Scrapy比较方便的一点。

提取数据

接着就可以使用解析工具解析源码,拿到数据了。

由于Scrapy内置了CSS和xpath选择器,而我们虽然可以使用Beautifulsoup,但是BeautifulSoup的缺点就是慢,这不符合我们Scrapy的风格,所有我还是建议大家使用CSS或者Xpath。

由于之前我并没有写过关于Xpath或者CSS选择器的用法,那么首先这个并不难,而且熟悉浏览器的用法,可以很简单的掌握他们。

我们以提取知乎日报里的文章url为例:

from scrapy import Request

def parse(self, response):

urls = response.xpath('//p[@class="box"]/a/@href').extract()

for url in urls:

    yield Request(url, callback=self.parse_url)
登入後複製

这里我们使用xpath解析出所有的url(extract()是获得所有URL集合,extract_first()是获得第一个)。然后将url利用yield语法糖,回调函数给下一个解析url的函数。

使用item

后面详细的组件使用留在下一章讲解,这里假如我们解析出了文章内容和标题,我们要将提取的数据保存到item容器。

Item对象相当于是自定义的python字典。 您可以使用标准的字典语法来获取到其每个字段的值。(字段即是我们之前用Field赋值的属性)。

假如我们下一个解析函数解析出了数据

def parse_url(self, response):

# name = xxxx

# article = xxxx

# 保存

item = DmozItem()

item['name'] = name

item['article'] = article

# 返回item

yield item
登入後複製

保存爬取到的数据

这里我们需要在管道文件pipelines.py里去操作数据,比如我们要将这些数据的文章标题只保留 5 个字,然后保存在文本里。或者我们要将数据保存到数据库里,这些都是在管道文件里面操作。我们后面在详细讲解。

那么最简单的存储方法是使用命令行命令:

scrapy crawl zhihu -o items.json

这条命令就会完成我们的数据保存在根目录的json文件里,我们还可以将他格式保存为msv,pickle等。改变命令后面的格式就可以了。

以上是Python爬蟲框架Scrapy的使用教學課程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

vscode 擴展是否是惡意的 vscode 擴展是否是惡意的 Apr 15, 2025 pm 07:57 PM

VS Code 擴展存在惡意風險,例如隱藏惡意代碼、利用漏洞、偽裝成合法擴展。識別惡意擴展的方法包括:檢查發布者、閱讀評論、檢查代碼、謹慎安裝。安全措施還包括:安全意識、良好習慣、定期更新和殺毒軟件。

See all articles