Scrapy爬虫框架:安装和开始新项目

Scrapy 是一套基于基于Twisted的异步处理框架,纯python实现的爬虫框架,只需要定制开发几个模块就可以轻松的实现一个爬虫。

安装

Scrapy官网和官方安装文档。
直接使用PIP安装
pip install Scrapy

注意:

Scrapy依赖这些python包:

  • lxml
  • parsel
  • w3lib
  • twisted
  • cryptography and pyOpenSSL

对于Scrapy最小的包版本:

  • Twisted 14.0
  • lxml 3.4
  • pyOpenSSL 0.14

Scrapy新项目

使用命令创建一个Scrapy新项目:
scrapy startproject 项目名称
例如创建一个名叫TaoBao的项目:scrapy startproject TaoBao

项目结构

TaoBao/
    scrapy.cfg            # Scrapy项目配置文件
    TaoBao/             # Python 项目module
        __init__.py
        items.py          # 项目的Item定义位置
        pipelines.py      # 项目的Pipeline文件
        settings.py       #项目的设置文件
        spiders/          # 蜘蛛目录
            __init__.py

编写一个蜘蛛

我们以爬取淘宝和天猫数据为例,我们通过淘宝的搜索结果然后爬取搜索出来的内容。在spiders目录下面新建一个名叫TmallAndTaoBaoSpider的蜘蛛:

class TmallAndTaoBaoSpider(Spider):
    name = "tts"
    allowed_domains = ['tmall.com', 'taobao.com']
    start_urls = []
    def parse(self, response):
        pass

这里需要解释一下,每一个蜘蛛都要继承Spider,这是Scrapy提供的基础蜘蛛,Spider中有3个变量必须定义:

  • name - 蜘蛛的名字,等会儿通过命令行启动蜘蛛的时候用到
  • allowed_domains - 限定蜘蛛爬取的域,以免去爬一些我们不关心的网站内容,上面只爬淘宝和天猫的。是一个数组
  • start_urls - 从哪儿开始爬。是一个数 组
  • def parse(self, response): - 这里就是蜘蛛通过下载器下载好的内容回调,通过这个方法可以取到网页内容。

这样一个简单的蜘蛛就完成了,可以通过命令:
scrapy crawl tts 来启动。当然上面的代码还什么都抓不到,因为start_urls没有填写,parse也还没有实现。

总结

简单的实现了一个蜘蛛,这个蜘蛛现在只能抓取静态网页,如果网站包含了动态内容,或者很多ajax请求,那么这样是抓不到完整数据的,下面会通过selenium来抓取动态网页,淘宝和天猫都是动态的。

下一篇:Scrapy爬虫框架:Selenium + PhantomJS

查看更多

不登高山,不知天之高也;不临深溪,不知地之厚也
感谢指点、交流、喜欢

你可能感兴趣的:(Scrapy爬虫框架:安装和开始新项目)