Scrapy入門

Scrary:一個開源友好的擴(kuò)展性強(qiáng)框架,主要作用從網(wǎng)站上抓取所需要的數(shù)據(jù)。優(yōu)點:快速,強(qiáng)大,擴(kuò)展性強(qiáng),無需接觸核心代碼即可使用,python編寫可移植型強(qiáng)。

包的安裝:

http://www.cnblogs.com/python-life/articles/4511314.html

一個簡單地scrapy spider編寫過程

  • 創(chuàng)建工程
    創(chuàng)建工程的命令scrapy startproject project_name
    在genspider的基礎(chǔ)上改寫想要的內(nèi)容cd project_name
    創(chuàng)建spiderscrapy genspider dmoz_spider(spider_name) dmoz.org(目標(biāo)網(wǎng)站)
  • 定義要摘取的內(nèi)容
    在items.py中定義要爬取的內(nèi)容
    title=scrapy.Field()
  • 編寫spider
    修改文件夾中的spider下的dmoz_spider.py文件
  • 修改pipeline
    修改pipeline.py
  • 運(yùn)行
    運(yùn)行,命令行輸入:scrapy crawl dmoz_spider(spider_name)
    列出一個工程中的爬蟲:scrapy list

scrapy命令行工具

scrapy --help用于查看幫助信息
scrapy version (-v)用于顯示scrapy版本信息,加上-v顯示各組件的版本
startproject:scrapy startproject project_name創(chuàng)建一個工程和其相對完整的目錄結(jié)構(gòu)
genspiderscrapy genspider dmoz_spider(spider_name) dmoz.org(目標(biāo)網(wǎng)站)在一個工程中(cd之后)運(yùn)行產(chǎn)生一個spider,可以產(chǎn)生多個spider,要求spider名稱不同
scrapy list:用來查看本工程中的spider名稱
scrapy view +url:查看頁面源碼在瀏覽器中顯示的樣子
scrapy parse:在工程中以固定的parse函數(shù)(工程中的函數(shù))解析某個頁面,可以進(jìn)一步判斷parse函數(shù)是否有誤
scrapy shell:用于調(diào)試數(shù)據(jù),檢測xpath,查看頁面源碼等,執(zhí)行命令進(jìn)入交互式頁面,可以產(chǎn)生一些供使用的全局變量
scrapy runspider spider_name.py:運(yùn)行一個自包含的爬蟲
scrapy bench:基準(zhǔn)測試,用來測試scrapy安裝是否成功

scrapy的重要組件

spider:定義如何爬取一個網(wǎng)站,包括怎樣跟蹤連接,怎樣提取數(shù)據(jù),基本流程:

  1. 產(chǎn)生初始requests
  2. parse函數(shù)解析requests對應(yīng)的response
  3. 使用selector抽取需要的信息
  4. 存儲item

selector:解析網(wǎng)頁的庫還有beautifulsoup,lxml。但是scrapy中默認(rèn)的是selector。常用的抽取方法:

  • xpath response.xpath('//title/text()')
  • css response.css(title::text)
  • re
  • extract

item :定義要抓取的屬性

import scrapy
class Product(scrapy.Item):
          name=scrapy.Field()
          price=scrapy.Field()

pipeline:清洗html數(shù)據(jù),檢驗數(shù)據(jù),存儲數(shù)據(jù)

from scrapy.exceptions import DropItem
class PricePipeline(object):
          vat_factor=1.15
          def process_item(self,item,spider):
                  if item['price']:
                          ...
                  else:
                          ...

要想使得pipeline生效,必須要做的事在setting.py中加入以下內(nèi)容:

ITEM_PIPELINES={
             'myproject.pipeline.PricePipeline':300,
             'myproject.pipeline.pricePipeline':800,
             #'路徑':優(yōu)先級,先執(zhí)行優(yōu)先級低的再執(zhí)行優(yōu)先級搞得
}

Feed Export:存儲抓取到的數(shù)據(jù)
存儲格式包括:

  • JSON
  • JSON lines
  • CSV
  • XML
    存儲位置包括:本地,S3,F(xiàn)TP,標(biāo)準(zhǔn)輸出
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Scrapy介紹 Scrapy是一個為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。 可以應(yīng)用在包括數(shù)據(jù)挖掘,信...
    JasonDing閱讀 122,798評論 15 126
  • scrapy學(xué)習(xí)筆記(有示例版) 我的博客 scrapy學(xué)習(xí)筆記1.使用scrapy1.1創(chuàng)建工程1.2創(chuàng)建爬蟲模...
    陳思煜閱讀 13,116評論 4 46
  • Scrapy入門環(huán)境搭建 概述 本文介紹用python3來搭建scrapy環(huán)境,實踐一下最簡單的scrapy用法。...
    Htea閱讀 1,425評論 0 1
  • Scrapy 入門教程### 安裝Scrapy lxml很容易出問題 。 定義 Item em是保存爬取到的數(shù)據(jù)...
    ASulee閱讀 1,429評論 1 0
  • 大家好,今天向大家介紹—雞蛋當(dāng)歸紅糖水 每星期喝1~2次,對面黃、月經(jīng)稀少有一定的輔助效果! 提示:這道糖水所需要...
    12月32號閱讀 428評論 0 1

友情鏈接更多精彩內(nèi)容