作一个有产品思惟的研发:Scrapy安装

天天10分钟,解决一个研发问题。html

若是你想了解我在作什么,请看《作一个有产品思惟的研发:课程大纲》传送门:http://www.javashuo.com/article/p-cayviilq-hn.htmlpython

 

今天咱们说一下Scrapy爬虫:mysql

Scrapy 在 Python 2.7 和 Python 3.3 或者更高版本上运行,他是用纯 Python 编写的,而且依赖于一些关键的 Python 包(其中包括):web

一、lxml ,一个高效的XML和HTML解析器
二、parsel , 一个基于 lxml 的 HTML / XML 数据提取库
三、w3lib ,一个用于处理URL和网页编码的多用途助手
四、twisted, 一个异步的网络框架
五、cryptography 和 pyOpenSSL ,以处理各类网络级安全需求正则表达式


Scrapy 通过测试支持的最低版本为:sql

a. Twisted 14.0
b. lxml 3.4
c. pyOpenSSL 0.14json

 

1、推荐使用Linux安装,你们能够安装一个虚拟机来作安全

一、VMWare安装CentOS 6.5教程网络

2、Lniux环境安装完毕之后,还须要安装pip,这个是下面要用到的命令框架

二、CentOS6.5安装pip教程

 

3、安装依赖

[MyCentOS6 ~]$ yum install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev

 

4、因为pyphon3在安装pip的时候安装好了,这里咱们直接安装scrapy

[MyCentOs6 ~]$ pip install scrapy

 

5、安装完之后还须要安装一些未来要用到的软件

一、Linux安装simplejson教程

二、Linux下安装pymysql教程

三、Linux下安装jieba教程

四、Linux下安装Gensim教程

五、Linux下安装whl文件

6、建立一个爬虫项目

[MyCentOs6 ~]$ scrapy startproject tutorial

 

而后在 tutorial / spiders 目录下建立 quotes_spider.py 文件:

import scrapy

class QuotesSpider(scrapy.Spider):
    name = "quotes"

    def start_requests(self):
        urls = [
            'http://quotes.toscrape.com/page/1/',
            'http://quotes.toscrape.com/page/2/',
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        page = response.url.split("/")[-2]
        filename = 'quotes-%s.html' % page
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)

 

上面的 Spider 继承了 scrapy.Spider 并定义了一些属性和方法:
  a. name:标识爬虫。它在项目中必须是惟一的,也就是说,您不能为不一样的 Spider 设置相同的名称。
  b. start_requests():必须返回一个可迭代的 Requests(您能够返回一个 request 列表或写一个生成器函数),Spider将开始抓取。后续请求将从这些初始请求中连续生成。
  c. parse():被调用来处理 response 的方法, response 由每一个 request 下载生成。 response 参数是一个 TextResponse 的实例,它保存页面内容,并具备更多有用的方法来处理它。

 

 运行爬虫:

[MyCentOS6 ~]$ scrapy crawl quotes

若是你想把数据存储到一个文件中:

[MySentOS6 ~]$ scrapy crawl quotes -o quotes.json

 

 

今日总结:

1. 最初的的方式是使用urllib2,读取url解析html,而后经过正则表达式匹配出想要的数据。

2. 如今的Scrapy,Python开发的一个快速、高层次的web抓取框架,用于抓取web站点并从页面中提取结构化的数据,Scrapy的用途很是普遍。

相关文章
相关标签/搜索