Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

快快樂樂學 Scrapy

1,338 views

Published on

Published in: Software, Technology, Education
  • Be the first to comment

快快樂樂學 Scrapy

  1. 1. h4353062@hotmail.com 鍾怡傑
  2. 2.  甚麼是 Scrapy ?  如何安裝 ?  Go! Go! 開始吧~  實作第一個 Spider  Demo
  3. 3.  Scrapy 是一個 Python 的框架,可以簡單用 Python 的程式碼寫網路蜘蛛,很方便的抓網頁上 的資料。  Scrapy at a glance  Frequently Asked Questions
  4. 4.  需要安裝 ◦ Python 2.7 ◦ Lxml ◦ OpenSSL ◦ pip or easy_install  安裝 Scrapy ◦ pip install Scrapy ◦ or ◦ easy_install Scrapy http://doc.scrapy.org/en/latest/intro/install.html
  5. 5.  Step 1. 編輯 /etc/apt/sources.list 加入這行 deb http://archive.scrapy.org/ubuntu precise main 2. 執行 curl –s http://archive.scrapy.org/ubuntu/archive.key | sudo apt-key add – 3. 升級 sudo apt-get update 4. 安裝 sudo apt-get install scrapy-<Version> 5. 測試執行 scrapy 指令 http://doc.scrapy.org/en/latest/topics/ubuntu.html
  6. 6. http://doc.scrapy.org/en/latest/topics/architecture.html
  7. 7.  甚麼是 Scrapy Shell ? ◦ 一個 python 的直譯器,可以動態顯示執行的結果。  執行 scrapy shell “<URL>”  Ex: scrapy shell "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/"
  8. 8.  讓我們試一下吧~  觀察輸出的結果 In [1]: sel.xpath('//title') In [2]: sel.xpath('//title').extract() In [3]: sel.xpath('//title/text()') In [4]: sel.xpath('//title/text()').extract() In [5]: sel.xpath('//title/text()').re('(w+):')
  9. 9.  由輸出結果可知,Scrapy 使用 Xpath 語法抓網頁的資 訊,預設輸出使用 JSON 格式  對於 Xpath 語法不熟的話,可參考以下網址: 1. http://www.w3schools.com/XPath/ 2. http://msdn.microsoft.com/zh- tw/library/ms256086(v=vs.110).aspx  練習資源 1. Xpath Tester 2. Chrome 瀏覽器的 Xpath Helper 套件
  10. 10. Scrapy Tutorial
  11. 11.  基本流程: 1. 建立一個新 Scrapy 專案 2. 定義你需要的 Item 3. 寫一個 Spider 抓資料 4. 寫一個 Item Pipeline 存抓到的資料
  12. 12.  scrapy startproject <Project_Name> scrapy startproject tutorial tutorial/ ├── tutorial │ ├── __init__.py │ ├── items.py │ ├── pipelines.py │ ├── settings.py │ └── spiders │ └── __init__.py └── scrapy.cfg
  13. 13.  編輯 tutorial/tutorial/items.py from scrapy.item import Item, Field class DmozItem(Item): title = Field() link = Field() desc = Field()
  14. 14.  編輯 tutorial/tutorial/spiders/dmoz_spider.py from scrapy.spider import Spider from scrapy.selector import Selector from tutorial.items import DmozItem class DmozSpider(Spider): name = “dmoz” allowed_domains = ["dmoz.org"] start_urls = [ “http://www.dmoz.org/Computers/Programming/Languages/Python/B "http://www.dmoz.org/Computers/Programming/Languages/Python/R ] 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() item['link'] = site.xpath('a/@href').extract() item['desc'] = site.xpath('text()').extract() items.append(item) return items
  15. 15.  執行路徑必須在 tutorial/tutorial/spiders/  抓到的資料儲存在 spiders/items.json scrapy crawl dmoz -o items.json -t json
  16. 16. 參考資料: Scrapy 0.22 documentation

×