第一节:Scrapy开源框架初探

   Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。  具体开发流程如下:

  一、确定待抓取网站

当您需要从某个网站中获取信息,但该网站未提供API或能通过程序获取信息的机制时, Scrapy可以助你一臂之力。

 二、定义要抓取的数据

定义我们需要爬取的数据。在Scrapy中, 这是通过 Scrapy Items 来完成的。(在本例子中为种子文件)

我们定义的Item:

  1 # Define here the models for your scraped items
  2 #
  3 # See documentation in:
  4 # http://doc.scrapy.org/topics/items.html
  5 
  6 from scrapy.item import Item, Field
  7 
  8 class TutorialItem(Item):
  9     # define the fields for your item here like:
 10     # name = Field()
 11     title=Field()
 12     link=Field()
 13     desc=Field()
 14     
 15     
 16 
View Code

三、编写抓取数据的Spiders(核心)

      定义种子初始URL、针对后续链接的规则以及从页面中提取数据的规则。

  1 #coding=utf-8
  2 
  3 from scrapy.spider import BaseSpider
  4 from scrapy.selector import HtmlXPathSelector 
  5 from tutorial.items import TutorialItem
  6 
  7 class DmozSpider(BaseSpider):
  8     name = "dmoz"
  9     allowed_domains = ["dmoz.org"]
 10     start_urls = [
 11         "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
 12         "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
 13     ]
 14 
 15     def parse(self, response):
 16         # filename = response.url.split("/")[-2]
 17         # # open(filename, 'wb').write(response.body)
 18         # with open(filename,'wb') as f:
 19         # 	f.write(response.body)
 20         hxs = HtmlXPathSelector(response)
 21         sites = hxs.select('//ul/li')
 22         items = []
 23 
 24         for site in sites:
 25             item = TutorialItem()
 26             item['title'] = site.select('a/text()').extract()
 27             item['link'] = site.select('a/@href').extract()
 28             item['desc'] = site.select('text()').extract()
 29             items.append(item)
 30 
 31         return items
 32 
 33 
 34 
View Code

四、执行Spider,保存数据

scrapy crawl  dmoz -o scraped_data.json
posted @ 2016-05-09 10:02  奋斗的珞珞  阅读(480)  评论(0编辑  收藏  举报