zoukankan      html  css  js  c++  java
  • 第一节: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
  • 相关阅读:
    C# WPF之Material Design自定义颜色
    C# WPF从RIOT API获取数据(RIOT代表作品《英雄联盟》)
    C# WPF聊天界面(3/3)
    C# WPF简况(2/3)
    C# WPF联系人列表(1/3)
    使用SignalR从服务端主动推送警报日志到各种终端(桌面、移动、网页)
    为什么Node.JS会受到青睐?
    2017级面向对象程序设计——团队作业1
    2017级面向对象程序设计 作业三
    如果抽不出时间写博客怎么办
  • 原文地址:https://www.cnblogs.com/dmir/p/5472891.html
Copyright © 2011-2022 走看看