VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • python爬虫框架scrapy实例详解(2)

HtmlXPathSelector使用了Xpath来解析数据

//ul/li表示选择所有的ul标签下的li标签

a/@href表示选择所有a标签的href属性

a/text()表示选择a标签文本

a[@href="abc"]表示选择所有href属性是abc的a标签

我们可以把解析出来的数据保存在一个scrapy可以使用的对象中,然后scrapy可以帮助我们把这些对象保存起来,而不用我们自己把这些数据存到文件中。我们需要在items.py中添加一些类,这些类用来描述我们要保存的数据

from scrapy.item import Item, Field

class DmozItem(Item):

   title = Field()

   link = Field()

   desc = Field()

然后在spider的parse方法中,我们把解析出来的数据保存在DomzItem对象中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from scrapy.spiderimport BaseSpider
from scrapy.selectorimport HtmlXPathSelector
from tutorial.itemsimport DmozItem
class DmozSpider(BaseSpider):
   name= "dmoz"
   allowed_domains= ["dmoz.org"]
   start_urls= [
       "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
       "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
   ]
   def parse(self, response):
       hxs= HtmlXPathSelector(response)
       sites= hxs.select('//ul/li')
       items= []
       for sitein sites:
           item= DmozItem()
           item['title']= site.select('a/text()').extract()
           item['link']= site.select('a/@href').extract()
           item['desc']= site.select('text()').extract()
           items.append(item)
       return items

在命令行执行scrapy的时候,我们可以加两个参数,让scrapy把parse方法返回的items输出到json文件中

scrapy crawl dmoz -o items.json -t json

items.json会被放在项目的根目录

 


相关教程