一、scrapy的下載安裝---Windows(安裝軟件太讓我傷心了)


寫博客就和筆記一樣真的很有用,你可以隨時的翻閱。爬蟲的爬蟲原理與數據抓取、非結構化與結構化數據提取、動態HTML處理和簡單的圖像識別已經學完,就差整理博客了

開始學習scrapy了,所以重新建了個分類。

scrapy的下載到安裝,再到能夠成功運行就耗費了我三個小時的時間,為了防止以后忘記,記錄一下

我用的是Python3.6.        Windows    需要四步

1、pip3 install wheel

2、安裝Twisted

  a. http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted, 下載:Twisted-17.9.0-cp36-cp36m-win_amd64.whl
  

  b. 進入文件所在目錄
  

  c. pip3 install Twisted-17.1.0-cp35-cp35m-win_amd64.whl

3、pip3 install scrapy

然后我打開cmd,輸入了scrapy, 出現:

    scrapy startproject myspider                              -----------創建scrapy項目

    cd myspider                                                       -----------進入myspider目錄

           scrapy genspider baidu baidu.com                    ------------創建爬蟲文件

    scrapy crawl baidu                                            -------------運行文件

之后,就報錯了,說缺少一個模塊win32,   上網查說  windows上scrapy依賴pywin32,下載網址: https://sourceforge.net/projects/pywin32/files/  

我下載了,在安裝的時候出現了:

 

上面說是沒注冊什么的,上網搜了一下解決方案,唉,自己沒看懂。痛心疾首,對我自己的智商感到捉急

4、在cmd中使用python -m pip install pypiwin32

 這是我成功的方法,上網查之后,在https://stackoverflow.com/questions/4863056/how-to-install-pywin32-module-in-windows-7有這樣一段話:

 


每天一個小實例:爬視頻(其實找到了視頻的url鏈接,用urllib.request.urlretrieve(視頻url,存儲的路徑)就可以了。

我做的這個例子太簡單;用scrapy框架顯得復雜,,我只是下載了一頁,多頁的話循環url,主要是走一遍使用Scrapy的流程:

 1 #第一
 2 打開mySpider目錄下的items.py
 3 
 4 # -*- coding: utf-8 -*-
 5 
 6 # Define here the models for your scraped items
 7 #
 8 # See documentation in:
 9 # https://doc.scrapy.org/en/latest/topics/items.html
10 
11 import scrapy
12 
13 '''Item 定義結構化數據字段,用來保存爬取到的數據,有點像Python中的dict,但是提供了一些額外的保護減少錯誤。
14 
15 可以通過創建一個 scrapy.Item 類, 並且定義類型為 scrapy.Field的類屬性來定義一個Item(可以理解成類似於ORM的映射關系)。'''
16 class MyspiderItem(scrapy.Item):
17     # define the fields for your item here like:
18     name = scrapy.Field()
19     mp4_url = scrapy.Field()
20 
21 
22 
23 #第二,打開你創建的爬蟲文件,我的是baisi.py
24 
25 # -*- coding: utf-8 -*-
26 import scrapy
27 from myspider.items import MyspiderItem
28 
29 class BaisiSpider(scrapy.Spider):
30     name = 'baisi'
31     allowed_domains = ['http://www.budejie.com']
32     start_urls = ['http://www.budejie.com/video/']
33 
34     def parse(self, response):
35         # 將我們得到的數據封裝到一個 `MyspiderItem` 對象
36         item = MyspiderItem()
37 
38         #提取數據
39         mp4_links = response.xpath('//li[@class="j-r-list-tool-l-down f-tar j-down-video j-down-hide ipad-hide"]')
40         for mp4_link in mp4_links:
41             name = mp4_link.xpath('./@data-text')[0].extract()
42             video = mp4_link.xpath('./a/@href')[0].extract()
43             #判斷是否有MP4——url鏈接,有的保存
44             if video:
45                 item['name'] = name
46                 item['mp4_url'] = video
47             # 將獲取的數據交給pipelines
48             yield item
49 
50 
51 
52 
53 
54 #第三 打開pipelines.py文件
55 
56 # -*- coding: utf-8 -*-
57 
58 # Define your item pipelines here
59 #
60 # Don't forget to add your pipeline to the ITEM_PIPELINES setting
61 # See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
62 import urllib.request
63 import os
64 class MyspiderPipeline(object):
65     def process_item(self, item, spider):
66 #文件名
67         file_name = "%s.mp4" % item['name']
68 #文件保存路徑
69         file_path = os.path.join("F:\\myspider\\myspider\\video", file_name)
70         urllib.request.urlretrieve(item['mp4_url'],file_path)
71         return item
72 
73 
74 第四,執行scrapy crawl baisi
View Code

 

執行結果:

 

 


 Scrapy 框架

  • Scrapy是用純Python實現一個為了爬取網站數據、提取結構性數據而編寫的應用框架,用途非常廣泛。
  • 框架的力量,用戶只需要定制開發幾個模塊就可以輕松的實現一個爬蟲,用來抓取網頁內容以及各種圖片,非常之方便。

Scrapy架構圖(綠線是數據流向):

 

 

 

  • Scrapy Engine(引擎): 負責SpiderItemPipelineDownloaderScheduler中間的通訊,信號、數據傳遞等。

  • Scheduler(調度器): 它負責接受引擎發送過來的Request請求,並按照一定的方式進行整理排列,入隊,當引擎需要時,交還給引擎

  • Downloader(下載器):負責下載Scrapy Engine(引擎)發送的所有Requests請求,並將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spider來處理,

  • Spider(爬蟲):它負責處理所有Responses,從中分析提取數據,獲取Item字段需要的數據,並將需要跟進的URL提交給引擎,再次進入Scheduler(調度器)

  • Item Pipeline(管道):它負責處理Spider中獲取到的Item,並進行進行后期處理(詳細分析、過濾、存儲等)的地方.

  • Downloader Middlewares(下載中間件):你可以當作是一個可以自定義擴展下載功能的組件。

  • Spider Middlewares(Spider中間件):你可以理解為是一個可以自定擴展和操作引擎Spider中間通信的功能組件(比如進入Spider的Responses;和從Spider出去的Requests)

scrapy運行的流程大概是:

  1. 引擎從調度器中取出一個鏈接(URL)用於接下來的抓取。
  2. 引擎把URL封裝成一個請求(request)傳給下載器。
  3. 下載器把資源下載下來,並封裝成應答包(response)
  4. 爬蟲解析response
  5. 解析出實體(item),則交給實體管道進行進一步處理
  6. 解析出的是銜接(URL),則把URL交給調度器等待抓取

 


 

基本使用:

1.在命令行中輸入: scrapy startproject myspider -----------創建scrapy項目

自動創建目錄:

 

打開:myspider

 

文件說明:

  • scrapy.cfg  項目的配置信息,主要為Scrapy命令行工具提供一個基礎的配置信息。(真正爬蟲相關的配置信息在settings.py文件中)
  • items.py    設置數據存儲模板,用於結構化數據,如:Django的Model
  • pipelines    數據處理行為,如:一般結構化的數據持久化
  • settings.py 配置文件,如:遞歸的層數、並發數,延遲下載等
  • spiders      爬蟲目錄,如:創建文件,編寫爬蟲規則

2.

   cd myspider                                             -----------進入myspider目錄

   scrapy genspider baidu baidu.com         ------------創建爬蟲文件

注意:一般創建爬蟲文件時,以網站域名命名,文件會在spiders中,

3.  然后你就可以編寫代碼了

4.  scrapy crawl baidu        -------------運行文件

總的來說:

制作 Scrapy 爬蟲 一共需要4步:

  • 新建項目 (scrapy startproject xxx):新建一個新的爬蟲項目
  • 明確目標 (編寫items.py):明確你想要抓取的目標
  • 制作爬蟲 (spiders/xxspider.py):制作爬蟲開始爬取網頁
  • 存儲內容 (pipelines.py):設計管道存儲爬取內容

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM