1. 程式人生 > >Scrapy 安裝與使用

Scrapy 安裝與使用

stock bsp 功能 輸出 結束 文件中 技術分享 easy 字典類

Scrapy的安裝:

當前環境win10,python_3.6.4,64bit。在命令提示符窗口運行pip install Scrapy,出現以下結果:

building twisted.test.raiser extension
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

按報錯提示安裝之後錯誤依舊存在;

http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted> 下載Twisted

對應版本的whl文件,cp後面是python版本,amd64代表64位,重新運行pip install命令:

 pip install C:\Users\E5-573G\Desktop\2018寒假\Python\爬蟲\scrapy\Twisted-17.5.0-cp36-cp36m-win_amd64.whl1 

其中install後面為下載的whl文件的完整路徑名 。

然後再次運行 pip install scrapy 命令即可安裝成功。

Scrapy命令行格式:

技術分享圖片

技術分享圖片

Scrapy常用命令:

技術分享圖片

技術分享圖片

應用Scrapy爬蟲框架主要是編寫配置型代碼。

Scrapy的第一個實例:演示HTML地址。

演示HTML頁面地址:http://python123.io/ws/demo.html

文件名稱:demo.html

技術分享圖片

技術分享圖片

產生步驟:

步驟1:建立一個Scrapy爬蟲工程;

選取一個目錄(C:\Users\E5-573G\Desktop\2018寒假\Python\爬蟲\scrapy),然後執行如下命令:

技術分享圖片

技術分享圖片

生成的工程目錄:

python123demo/ ——————— 外層目錄

? scrapy.cfg ——————— 部署Scrapy爬蟲的配置文件

? python123demo/ ——————— Scrapy框架的用戶自定義python代碼

? init.py ——————— 初始化腳本

? items.py ——————— Items代碼模板(繼承類)

? middlewares.py ————— Middlewares代碼模塊(繼承類)

? pipelines.py ————— Pipelines.py代碼模塊(繼承類)

? settings.py ————— Scrapy爬蟲的配置文件

? spiders/ ————— Spiders代碼模塊目錄(繼承類)

目錄結構 pycache/ ————— 緩存目錄,無需修改

? spiders/ ————— Spiders代碼模塊目錄(繼承類)

? init.py ————— 初始化腳本

? pycache/ ————— 緩存目錄,無需修改

內層目錄結構 用戶自定義的spider代碼增加在此處

步驟2:在工程中產生一個Scrapy爬蟲

進入工程目錄(C:\Users\E5-573G\Desktop\2018寒假\Python\爬蟲\scrapy\python123demo)。然後執行如下命令:

技術分享圖片

技術分享圖片

該命令行作用:

生成一個名稱為demo的spider

在spiders目錄下增加代碼文件demo.py

#demo.py
# -*- coding : utf-8 -*-
import scrapy
?
class DemoSpider(scrapy.Spider) :
    name = "demo"
    allowed_domains = ["python123.io"]
    start_urls = [heep://python123.io/]
?
    def parse (self,response):
      #parse()用於處理響應,解析內容形成字典,發現新的URL爬取請求
        pass

步驟3:配置產生spider爬蟲

? 配置:(1)初始URL地址 (2)獲取頁面後的解析方式

#demo1.py
# -*- coding : utf-8 -*-
import scrapy
?
class DemoSpider(scrapy.Spider) :
    name = "demo"
    #   allowed_domains = ["python123.io"]  #可選 
    start_urls = [heep://python123.io/ws/demo.html]
?
    def parse (self,response):
         #parse()用於處理響應,解析內容形成字典,發現新的URL爬取請求
        fname = response.url.split(/)[-1]
        with open (fname,wb) as f:
            f.write(response.body)
            self.log(Saved file %s. % fname)

步驟4:運行爬蟲,獲取網頁

在命令行,執行如下命令:

技術分享圖片

技術分享圖片

demo爬蟲被執行,捕獲頁面存儲在demo.html

回顧demo.py代碼

#demo.py
# -*- coding : utf-8 -*-
import scrapy
?
class DemoSpider(scrapy.Spider) :
    name = "demo"
    start_urls = [heep://python123.io/ws/demo.html]
?
    def parse (self,response):
         #parse()用於處理響應,解析內容形成字典,發現新的URL爬取請求
        fname = response.url.split(/)[-1]
        with open (fname,wb) as f:
            f.write(response.body)
            self.log(Saved file %s. % fname)

demo.py代碼的完整版本

#demo all.py
import scrapy
?
class DemoSpider(scrapy.Spider) :
    name = "demo"
?
    def start_urls(self):
        urls= [heep://python123.io/ws/demo.html]
        for url in urls:
            yield scrapy.Request(url = url,callback = self.parse)
            
    def parse (self,response):
         #parse()用於處理響應,解析內容形成字典,發現新的URL爬取請求
        fname = response.url.split(/)[-1]
        with open (fname,wb) as f:
            f.write(response.body)
            self.log(Saved file %s. % fname)

yield關鍵字的作用

yield <---------->生成器:包含yield語句的函數是一個生成器;

生成器每次產生一個值(yield語句),函數被凍結,被喚醒後在產生一個值。生成器是一個不斷產生值的函數。

生成器每調用一次在yield位置產生一個值,直到函數執行結束。

生成器相比一次列出所有內容的優勢:

? 更節省存儲空間;

? 響應更迅速;

? 使用更靈活;

Scrapy爬蟲的使用步驟:

? 步驟1:創建一個工程和Spider模板;

? 步驟2:編寫Spider

? 步驟3:編寫Item Pipeline

? 步驟4:優化配置策略

Scrapy爬蟲的數據類型:

? Request類、Response類、Item類

Request類:class scrapy.http.Request()

? Request對象表示一個HTTP請求,由Spider生成,由Downloader執行。

技術分享圖片

技術分享圖片

Response類:class scrapy.http.Response()

? Response對象表示一個HTTP響應由Downloader生成,由Spider處理。

技術分享圖片

技術分享圖片

Item類: class scrapy.item.Item()

Item對象表示一個從HTML頁面中提取的信息內容;由Spider生成,由Item Pipeline處理,Item類似字典類型,可以按照字典類型操作。

Scrapy爬蟲提取信息的方法:

scrapy爬蟲支持多種HTML信息提取方法:Beautiful Scoop、lxml、re、XPath Selector、CSS Selector

CSS Selector的基本使用:

技術分享圖片

技術分享圖片

CSS Selector由W3C組織維護並規範。

”股票數據Scrapy爬蟲”實例介紹

功能描述:

目標:獲取上交所和深交所所有股票的名稱和交易信息

輸出:保存到文件中

? 技術路線:scrapy

數據網站的確定

獲取股票列表:

東方財富網:http://quote.easymoney.com/stocklist.html

獲取個股信息:

百度股票:http://gupiao.baidu.com/stock/

單個股票:http://gupiao.baidu..com/stock/sz002439.html

編寫spider處理鏈接爬取和頁面解析,編寫pipelines處理信息存儲

步驟:

? 步驟1:創建工程和Spider模板;

>scrapy startproject BaiduStocks

>cd BaiduStocks

>scrapy genspider stocks baidu.com

進一步修改spiders/stock.py文件

? 步驟2:編寫Spider

配置stocks.py文件

修改對返回頁面的處理

修改對新增URL爬取請求的處理

? 步驟3:編寫Item Pipeline

Scrapy 安裝與使用