作一個有產品思惟的研發: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的用途很是普遍。

相關文章
相關標籤/搜索