日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python spider 安装_Python爬虫(11):Scrapy框架的安装和基本使用

發(fā)布時間:2025/4/16 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python spider 安装_Python爬虫(11):Scrapy框架的安装和基本使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

Scrapy的安裝

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

Windows安裝

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

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

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

lxml安裝,之前的文章說過他的安裝,那么我們這里在重新整理一下。whl文件地址:here。找到自己對應版本的文件,下載好后,找到文件位置,右鍵點擊文件屬性,點擊安全標簽,復制他的所在路徑。打開管理員工具(cmd),pip install ;

PyOpenssl 的whl文件地址:here。點擊下載,whl文件安裝方式同上;

Twisted框架這個框架是一個異步網(wǎng)絡庫,是Scrapy的核心。whl文件地址:here;

Pywin32這是一個Pywin32兼容的庫,下載地址:here,選好版本進行下載;

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

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

conda install scrapy

Linux安裝

Linux系統(tǒng)安裝起來就要簡單一點:

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

需要安裝命令行開發(fā)工具,我們點擊安裝。安裝完成,那么依賴庫也就安裝完成了。

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

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

Scrapy的基本使用

Scrapy的中文文檔地址:here

Scrapy是一個為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應用框架。 可以應用在包括數(shù)據(jù)挖掘,信息處理或存儲歷史數(shù)據(jù)等一系列的程序中。

他的基本項目流程為:

創(chuàng)建一個Scrapy項目

定義提取的Item

編寫爬取網(wǎng)站的spider并提取Item

編寫Item Pipeline來存儲提取到的Item(即數(shù)據(jù))

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

抓取索引頁:請求索引頁的URL并得到源代碼,進行下一步分析;

獲取內(nèi)容和下一頁鏈接:分析源代碼,提取索引頁數(shù)據(jù),并且獲取下一頁鏈接,進行下一步抓取;

翻頁爬取:請求下一頁信息,分析內(nèi)容并請求在下一頁鏈接;

保存爬取結(jié)果:將爬取結(jié)果保存為特定格式和文本,或者保存數(shù)據(jù)庫。

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

創(chuàng)建項目

在開始爬取之前,您必須創(chuàng)建一個新的Scrapy項目。 進入您打算存儲代碼的目錄中,運行下列命令(以知乎日報為例):

scrapy startproject zhihurb

該命令將會創(chuàng)建包含下列內(nèi)容的 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

這一步是定義我們需要獲取到的數(shù)據(jù)信息,比如我們需要獲得網(wǎng)站里的一些url,網(wǎng)站文章的內(nèi)容,文章的作者等。這一步定義的地方就在我們的items.py文件。

import scrapy

class ZhihuItem(scrapy.Item):

name = scrapy.Field()

article = scrapy.Field()

編寫Spider

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

首先我們需要在 spiders/ 文件夾下創(chuàng)建我們的爬蟲文件,比如就叫spider.py。寫爬蟲前,我們需要先定義一些內(nèi)容。我們以知乎日報為例: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組件。然后創(chuàng)建一個爬蟲類,在類里我們定義了我們的爬蟲名稱:zhihu(注意:爬蟲名稱獨一無二的,是不可以和別的爬蟲重復的)。還定義了一個網(wǎng)址范圍,和一個起始 url 列表,說明起始 url 可以是多個。

然后我們定義一個解析函數(shù):

def parse(self, response):

print(response.text)

我們直接打印一下,看看這個解析函數(shù)是什么。

運行爬蟲

scrapy crawl zhihu

由于Scrapy是不支持在IDE中執(zhí)行,所以我們必須在命令行里執(zhí)行命令,我們要確定是不是cd到爬蟲目錄下。然后執(zhí)行,這里的命令顧名思義,crawl是蜘蛛的意思,zhihu就是我們定義的爬蟲名稱了。

查看輸出,我們先看到的是一些爬蟲類的輸出,可以看到輸出的log中包含定義在 start_urls 的初始URL,并且與spider中是一一對應的。我們接著可以看到打印出了網(wǎng)頁源代碼。可是我們似乎并沒有做什么,就得到了網(wǎng)頁的源碼,這是Scrapy比較方便的一點。

提取數(shù)據(jù)

接著就可以使用解析工具解析源碼,拿到數(shù)據(jù)了。

由于Scrapy內(nèi)置了CSS和xpath選擇器,而我們雖然可以使用Beautifulsoup,但是BeautifulSoup的缺點就是慢,這不符合我們Scrapy的風格,所有我還是建議大家使用CSS或者Xpath。

由于之前我并沒有寫過關于Xpath或者CSS選擇器的用法,那么首先這個并不難,而且熟悉瀏覽器的用法,可以很簡單的掌握他們。

我們以提取知乎日報里的文章url為例:

from scrapy import Request

def parse(self, response):

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

for url in urls:

yield Request(url, callback=self.parse_url)

這里我們使用xpath解析出所有的url(extract()是獲得所有URL集合,extract_first()是獲得第一個)。然后將url利用yield語法糖,回調(diào)函數(shù)給下一個解析url的函數(shù)。

使用item

后面詳細的組件使用留在下一章講解,這里假如我們解析出了文章內(nèi)容和標題,我們要將提取的數(shù)據(jù)保存到item容器。

Item對象相當于是自定義的python字典。 您可以使用標準的字典語法來獲取到其每個字段的值。(字段即是我們之前用Field賦值的屬性)。

# 假如我們下一個解析函數(shù)解析出了數(shù)據(jù)

def parse_url(self, response):

# name = xxxx

# article = xxxx

# 保存

item = DmozItem()

item['name'] = name

item['article'] = article

# 返回item

yield item

保存爬取到的數(shù)據(jù)

這里我們需要在管道文件pipelines.py里去操作數(shù)據(jù),比如我們要將這些數(shù)據(jù)的文章標題只保留 5 個字,然后保存在文本里。或者我們要將數(shù)據(jù)保存到數(shù)據(jù)庫里,這些都是在管道文件里面操作。我們后面在詳細講解。

那么最簡單的存儲方法是使用命令行命令:

scrapy crawl zhihu -o items.json

這條命令就會完成我們的數(shù)據(jù)保存在根目錄的json文件里,我們還可以將他格式保存為msv,pickle等。改變命令后面的格式就可以了。

最后

本篇教程僅介紹了Scrapy的基礎,還有很多特性沒有涉及到,那么我會在下一篇文章分享一下我對于Scrapy組件的學習理解。

謝謝閱讀

總結(jié)

以上是生活随笔為你收集整理的python spider 安装_Python爬虫(11):Scrapy框架的安装和基本使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。