python spider 安装_Python爬虫(11):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 ;
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('//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語法糖,回調函數給下一個解析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等。改變命令后面的格式就可以了。
最后
本篇教程僅介紹了Scrapy的基礎,還有很多特性沒有涉及到,那么我會在下一篇文章分享一下我對于Scrapy組件的學習理解。
謝謝閱讀
總結
以上是生活随笔為你收集整理的python spider 安装_Python爬虫(11):Scrapy框架的安装和基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: visionmaster视觉软件说明书_
- 下一篇: 什么时候用转发什么时候用重定向_验孕棒什