Scrapy 快速上手
2014-03-27 22:46
155 查看
Scrapy 架構圖
Spiders --> Scheduler --> Downloader --> 回到 Spiders,過濾抓到的資訊 --> 依 Item Pipeline 存抓到的資料
想了更深入了解架構可以細讀這篇官方文件
在寫 Spider 時心中要有這張圖,很重要!!
從 Scrapy Shell 開始吧~
Scrapy shell 這是一個 python 直譯器,可以動態顯示執行的結果。
Step
1. 開啟一個 Scrapy shell 抓以下網站的資料
2. 試一下吧~
上面是使用 Xpath 語法抓網頁的資訊,預設輸出使用 JSON 格式
3. 結束輸入exit
對於 Xpath 語法不熟的話,可參考以下網址:
1. http://www.w3schools.com/XPath/
2. http://msdn.microsoft.com/zh-tw/library/ms256086(v=vs.110).aspx
練習 Xpath 的測試網站: http://www.freeformatter.com/xpath-tester.html
如果使用 Chrome 瀏覽器的話,可以安裝 Xpath Helper 套件,協助分析 Xpath 語法,強烈推薦!!
經驗談: 寫 Spider 之前,先用 Scrapy shell 測試抓的資料是否正確? 確認 Xpath 語法可正確抓到想要的資料後,在開始寫 Spider 會省下很多時間。
開始寫第一個 Spider 吧~
基本流程如下:
1. 建立一個新 Scrapy 專案
2. 定義你需要的 Item
3. 寫一個 Spider 抓資料
4. 寫一個 Item Pipeline 存抓到的資料
Step
1. 建立一個專案,名稱 tutorial
2. 編輯 tutorial/tutorial/items.py 定義 Item
3. 建立 tutorial/tutorial/spiders/dmoz_spider.py 檔案,開始寫一個 Spider
4. 執行 Spider,路徑必須在 tutorial/tutorial/spiders/ 才能執行
抓到的資料輸出成JSON格式的檔案,存在spiders/items.json
如果是抓中文的網站,會發現中文字變成像 \u4f60\u597d 的形式,原因是 python 預設編碼為 Utf-8,解決方法:
1. 自己寫一個簡單的 PHP 程式做轉換,可參考這篇
2. 參考這兩篇文章 1, 2
以上範例皆來自於這篇官方文件
英文不好的話,有翻譯官方文件,但翻譯的不是很完全,就當作參考囉。
Spiders --> Scheduler --> Downloader --> 回到 Spiders,過濾抓到的資訊 --> 依 Item Pipeline 存抓到的資料
想了更深入了解架構可以細讀這篇官方文件
在寫 Spider 時心中要有這張圖,很重要!!
從 Scrapy Shell 開始吧~
Scrapy shell 這是一個 python 直譯器,可以動態顯示執行的結果。
Step
1. 開啟一個 Scrapy shell 抓以下網站的資料
scrapy shell "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/"
2. 試一下吧~
In [1]: sel.xpath('//title') Out[1]: [<Selector xpath='//title' data=u'<title>Open Directory - Computers: Progr'>] In [2]: sel.xpath('//title').extract() Out[2]: [u'<title>Open Directory - Computers: Programming: Languages: Python: Books</title>'] In [3]: sel.xpath('//title/text()') Out[3]: [<Selector xpath='//title/text()' data=u'Open Directory - Computers: Programming:'>] In [4]: sel.xpath('//title/text()').extract() Out[4]: [u'Open Directory - Computers: Programming: Languages: Python: Books'] In [5]: sel.xpath('//title/text()').re('(\w+):') Out[5]: [u'Computers', u'Programming', u'Languages', u'Python']
上面是使用 Xpath 語法抓網頁的資訊,預設輸出使用 JSON 格式
3. 結束輸入exit
對於 Xpath 語法不熟的話,可參考以下網址:
1. http://www.w3schools.com/XPath/
2. http://msdn.microsoft.com/zh-tw/library/ms256086(v=vs.110).aspx
練習 Xpath 的測試網站: http://www.freeformatter.com/xpath-tester.html
如果使用 Chrome 瀏覽器的話,可以安裝 Xpath Helper 套件,協助分析 Xpath 語法,強烈推薦!!
經驗談: 寫 Spider 之前,先用 Scrapy shell 測試抓的資料是否正確? 確認 Xpath 語法可正確抓到想要的資料後,在開始寫 Spider 會省下很多時間。
開始寫第一個 Spider 吧~
基本流程如下:
1. 建立一個新 Scrapy 專案
2. 定義你需要的 Item
3. 寫一個 Spider 抓資料
4. 寫一個 Item Pipeline 存抓到的資料
Step
1. 建立一個專案,名稱 tutorial
scrapy startproject tutorial tutorial/ ├── tutorial │ ├── __init__.py │ ├── items.py │ ├── pipelines.py │ ├── settings.py │ └── spiders │ └── __init__.py └── scrapy.cfg
2. 編輯 tutorial/tutorial/items.py 定義 Item
from scrapy.item import Item, Field class DmozItem(Item): title = Field() link = Field() desc = Field()
3. 建立 tutorial/tutorial/spiders/dmoz_spider.py 檔案,開始寫一個 Spider
from scrapy.spider import Spider from scrapy.selector import Selector from tutorial.items import DmozItem class DmozSpider(Spider): name = "dmoz" #給 Spider 取個名子 allowed_domains = ["dmoz.org"] #要抓的Domain start_urls = [ "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/", #要抓的網址 "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/" ] def parse(self, response): sel = Selector(response) sites = sel.xpath('//ul/li') items = [] for site in sites: item = DmozItem() #之前 Step2 定義的 Item item['title'] = site.xpath('a/text()').extract() #用 Xpath 抓指定的資料 item['link'] = site.xpath('a/@href').extract() item['desc'] = site.xpath('text()').extract() items.append(item) return items
4. 執行 Spider,路徑必須在 tutorial/tutorial/spiders/ 才能執行
scrapy crawl dmoz -o items.json -t json
抓到的資料輸出成JSON格式的檔案,存在spiders/items.json
如果是抓中文的網站,會發現中文字變成像 \u4f60\u597d 的形式,原因是 python 預設編碼為 Utf-8,解決方法:
1. 自己寫一個簡單的 PHP 程式做轉換,可參考這篇
2. 參考這兩篇文章 1, 2
以上範例皆來自於這篇官方文件
英文不好的話,有翻譯官方文件,但翻譯的不是很完全,就當作參考囉。
相关文章推荐
- [scrapy]scrapy-redis快速上手/scrapy爬虫分布式改造
- 【图文详解】scrapy安装与真的快速上手——爬取豆瓣9分榜单
- 【图文详解】scrapy安装与真的快速上手——爬取豆瓣9分榜单
- 【图文详解】scrapy安装与真的快速上手——爬取豆瓣9分榜单
- 快速上手——我用scrapy写爬虫(一)
- EasyDBO快速上手(1)
- kafka快速上手
- gulp教程_从入门到项目中快速上手使用方法
- 离线消息如何实现?-- ESFramework 4.0 快速上手(02)
- Rancher 快速上手指南操作(1)
- 快速上手 MySQL --图形化操作详解//---安装/创建/查询
- Masonry介绍与使用实践:快速上手Autolayout
- Vue.js 2.0 详细教程 快速上手 - 基础篇
- mybatis 注解快速上手
- 快乐Python快速上手系列7 - 动态获得类属性
- 在 ASP.NET 環境下使用 Memcached 快速上手指南
- swift快速入门,三分钟上手
- 如何让企业应用实现“快速上手”Openbiz提出新概念
- 快速上手友盟推送前后端
- 快速上手Ubuntu之搭建开发环境篇——安装常用开发软件