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

生成项目

scrapy提供一个工具来生成项目,生成的项目中预置了一些文件,用户需要在这些文件中添加自己的代码。

打开命令行,执行:scrapy startproject tutorial,生成的项目类似下面的结构

tutorial/

   scrapy.cfg

   tutorial/

       __init__.py

       items.py

       pipelines.py

       settings.py

       spiders/

           __init__.py

           ...

scrapy.cfg是项目的配置文件

用户自己写的spider要放在spiders目录下面,一个spider类似

1
2
3
4
5
6
7
8
9
10
11
from scrapy.spiderimport BaseSpider
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):
        filename= response.url.split("/")[-2]
        open(filename,'wb').write(response.body)

name属性很重要,不同spider不能使用相同的name

start_urls是spider抓取网页的起始点,可以包括多个url

parse方法是spider抓到一个网页以后默认调用的callback,避免使用这个名字来定义自己的方法。

当spider拿到url的内容以后,会调用parse方法,并且传递一个response参数给它,response包含了抓到的网页的内容,在parse方法里,你可以从抓到的网页里面解析数据。上面的代码只是简单地把网页内容保存到文件。

 

开始抓取

你可以打开命令行,进入生成的项目根目录tutorial/,执行 scrapy crawl dmoz, dmoz是spider的name。

 

解析网页内容

scrapy提供了方便的办法从网页中解析数据,这需要使用到HtmlXPathSelector

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from scrapy.spiderimport BaseSpider
from scrapy.selectorimport HtmlXPathSelector
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')
        for sitein sites:
            title= site.select('a/text()').extract()
            link= site.select('a/@href').extract()
            desc= site.select('text()').extract()
            print title, link, desc

相关教程