1. 程式人生 > >分分鐘學會用python爬蟲框架Scrapy

分分鐘學會用python爬蟲框架Scrapy

Scrapy主要包括了以下元件:

  • 引擎(Scrapy)
    用來處理整個系統的資料流處理, 觸發事務(框架核心)
  • 排程器(Scheduler)
    用來接受引擎發過來的請求, 壓入佇列中, 並在引擎再次請求的時候返回. 可以想像成一個URL(抓取網頁的網址或者說是連結)的優先佇列, 由它來決定下一個要抓取的網址是什麼, 同時去除重複的網址
  • 下載器(Downloader)
    用於下載網頁內容, 並將網頁內容返回給蜘蛛(Scrapy下載器是建立在twisted這個高效的非同步模型上的)
  • 爬蟲(Spiders)
    爬蟲是主要幹活的, 用於從特定的網頁中提取自己需要的資訊, 即所謂的實體(Item)。使用者也可以從中提取出連結,讓Scrapy繼續抓取下一個頁面
  • 專案管道(Pipeline)
    負責處理爬蟲從網頁中抽取的實體,主要的功能是持久化實體、驗證實體的有效性、清除不需要的資訊。當頁面被爬蟲解析後,將被髮送到專案管道,並經過幾個特定的次序處理資料。
  • 下載器中介軟體(Downloader Middlewares)
    位於Scrapy引擎和下載器之間的框架,主要是處理Scrapy引擎與下載器之間的請求及響應。
  • 爬蟲中介軟體(Spider Middlewares)
    介於Scrapy引擎和爬蟲之間的框架,主要工作是處理蜘蛛的響應輸入和請求輸出。
  • 排程中介軟體(Scheduler Middewares)
    介於Scrapy引擎和排程之間的中介軟體,從Scrapy引擎傳送到排程的請求和響應。

Scrapy執行流程大概如下:

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

一、安裝

  因為python3並不能完全支援Scrapy,因此為了完美執行Scrapy,我們使用python2.7來編寫和執行Scrapy。

1pip install Scrapy

  注:windows平臺需要依賴pywin32,請根據自己系統32/64位選擇下載安裝,https://sourceforge.net/projects/pywin32/

    其它可能依賴的安裝包:lxml-3.6.4-cp27-cp27m-win_amd64.whl,VCForPython27.msi百度下載即可

二、基本使用

1、建立專案

執行命令:

1scrapy startproject p1(your_project_name)

2.自動建立目錄的結果:

檔案說明:

  • scrapy.cfg  專案的配置資訊,主要為Scrapy命令列工具提供一個基礎的配置資訊。(真正爬蟲相關的配置資訊在settings.py檔案中)
  • items.py    設定資料儲存模板,用於結構化資料,如:Django的Model
  • pipelines    資料處理行為,如:一般結構化的資料持久化
  • settings.py 配置檔案,如:遞迴的層數、併發數,延遲下載等
  • spiders      爬蟲目錄,如:建立檔案,編寫爬蟲規則

注意:一般建立爬蟲檔案時,以網站域名命名

3、編寫爬蟲

在spiders目錄中新建 xiaohuar_spider.py 檔案

示例程式碼:

12345678910111213141516171819#!/usr/bin/env python# -*- coding:utf-8 -*-import scrapyclass XiaoHuarSpider(scrapy.spiders.Spider):name = "xiaohuar"allowed_domains = ["xiaohuar.com"]start_urls = ["http://www.xiaohuar.com/hua/",]def parse(self, response):# print(response, type(response))# from scrapy.http.response.html import HtmlResponse# print(response.body_as_unicode())current_url = response.url #爬取時請求的urlbody = response.body  #返回的htmlunicode_body = response.body_as_unicode()#返回的html unicode編碼

  備註:

  • 1.爬蟲檔案需要定義一個類,並繼承scrapy.spiders.Spider
  • 2.必須定義name,即爬蟲名,如果沒有name,會報錯。因為原始碼中是這樣定義的:

  • 3.編寫函式parse,這裡需要注意的是,該函式名不能改變,因為Scrapy原始碼中預設callback函式的函式名就是parse;
  • 4.定義需要爬取的url,放在列表中,因為可以爬取多個url,Scrapy原始碼是一個For迴圈,從上到下爬取這些url,使用生成器迭代將url傳送給下載器下載url的html。原始碼截圖:

4、執行

進入p1目錄,執行命令

1scrapy crawl xiaohau --nolog

  格式:scrapy crawl+爬蟲名  --nolog即不顯示日誌

5.scrapy查詢語法:

  當我們爬取大量的網頁,如果自己寫正則匹配,會很麻煩,也很浪費時間,令人欣慰的是,scrapy內部支援更簡單的查詢語法,幫助我們去html中查詢我們需要的標籤和標籤內容以及標籤屬性。下面逐一進行介紹:

  • 查詢子子孫孫中的某個標籤(以div標籤為例)://div
  • 查詢兒子中的某個標籤(以div標籤為例):/div
  • 查詢標籤中帶有某個class屬性的標籤://div[@class='c1']即子子孫孫中標籤是div且class=‘c1’的標籤
  • 查詢標籤中帶有某個class=‘c1’並且自定義屬性name=‘alex’的標籤://div[@class='c1'][@name='alex']
  • 查詢某個標籤的文字內容://div/span/text() 即查詢子子孫孫中div下面的span標籤中的文字內容
  • 查詢某個屬性的值(例如查詢a標籤的href屬性)://a/@href

示例程式碼:

12345678910111213141516171819def parse(self, response):# 分析頁面# 找到頁面中符合規則的內容(校花圖片),儲存# 找到所有的a標籤,再訪問其他a標籤,一層一層的搞下去hxs = HtmlXPathSelector(response)#建立查詢物件# 如果url是 http://www.xiaohuar.com/list-1-\d+.htmlif re.match('http://www.xiaohuar.com/list-1-\d+.html', response.url): #如果url能夠匹配到需要爬取的url,即本站urlitems = hxs.select('//div[@class="item_list infinite_scroll"]/div'#select中填寫查詢目標,按scrapy查詢語法書寫for in range(len(items)):src = hxs.select('//div[@class="item_list infinite_scroll"]/div[%d]//div[@class="img"]/a/img/@src' % i).extract()

相關推薦

教你分鐘學會python爬蟲框架Scrapy爬取你想要的內容

python 爬蟲 Scrapy python爬蟲 教你分分鐘學會用python爬蟲框架Scrapy爬取心目中的女神 python爬蟲學習課程,下載地址:https://pan.baidu.com/s/1v6ik6YKhmqrqTCICmuceug 課程代碼原件:課程視頻:教你分分鐘學會用py

教你分鐘學會python爬蟲框架Scrapy爬取心目中的女神

Scrapy,Python開發的一個快速,高層次的螢幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的資料。Scrapy用途廣泛,可以用於資料探勘、監測和自動化測試。 Scrapy吸引人的地方在於它是一個框架,任何人都可以根據需求方便的修改。它也提供了多種型別爬蟲

分鐘學會python爬蟲框架Scrapy

Scrapy主要包括了以下元件:引擎(Scrapy)用來處理整個系統的資料流處理, 觸發事務(框架核心)排程器(Scheduler)用來接受引擎發過來的請求, 壓入佇列中, 並在引擎再次請求的時候返回. 可以想像成一個URL(抓取網頁的網址或者說是連結)的優先佇列, 由它來決定下一個要抓取的網址是什麼, 同時

Python爬蟲框架Scrapy實例(二)

head sports spi 工作目錄 http 鏈接 進入 效果 tex 目標任務:使用Scrapy框架爬取新浪網導航頁所有大類、小類、小類裏的子鏈接、以及子鏈接頁面的新聞內容,最後保存到本地。 大類小類如下圖所示: 點擊國內這個小類,進入頁面後效果如下圖(部分截圖)

精通Python爬蟲框架Scrapy PDF下載

Scrapy是一個開源的Python爬蟲框架,可以用來輕鬆提取從頁面資料。Scrapy帶有豐富的特性,可通過簡單的編碼或配置來訪問,從而可以節省開發人員數週的開發時間,並高效地提取所需資料。Scrapy有一個高度活躍且迅速增長的社群,而且已經成為黑客、創業者和Web爬取專家的首*框架。&nbs

python 爬蟲框架 scrapy 的目錄結構

First: scrapy 框架的專案目錄結構: Second:scrapy.cfg檔案:主要是爬蟲專案的配置檔案 hexunpjt/hexunpjt/__init__.py 檔案:專案的初始化檔案,主要寫的是一些專案初始化資訊。 hexunpjt/hexunpjt/items

Python 爬蟲框架 Scrapy 在 Windows10 系統環境下的安裝和配置

環境: Windows10 系統、python3.4.3 版本 安裝 Scrapy : 使用 pip 安裝 Scrapy,在命令列視窗中輸入命令 “pip install Scrapy”,若不報錯即可安裝成功。 注意:可在命令列視窗中輸入命令“pip -h”測試 pip 模組是否已安

Python爬蟲框架Scrapy例項(三)資料儲存到MongoDB

Python爬蟲框架Scrapy例項(三)資料儲存到MongoDB任務目標:爬取豆瓣電影top250,將資料儲存到MongoDB中。 items.py檔案複製程式碼# -*- coding: utf-8 -*-import scrapy class DoubanItem(scrapy.Item): # d

11月7日python爬蟲框架Scrapy基礎知識

爬蟲最好的方式: 下載一頁匹配一頁,以後可以使用多執行緒讓抓取頁面和儲存到資料庫分開進行 爬取動態網頁的兩種方式, 1.selenium模擬瀏覽器 2. 在F12的Network中抓包,使用json字串 執行爬蟲需要安裝win23 :  pip install pypiwin32

分享《精通Python爬蟲框架Scrapy》中文PDF+英文PDF+原始碼

下載:https://pan.baidu.com/s/13tFIFOhDM8PG9pFUuA8M2g 更多資料:http://blog.51cto.com/3215120 《精通Python爬蟲框架Scrapy》中文PDF+英文PDF+原始碼 中文版PDF,364頁,帶目錄和書籤,文字可以複製貼上,彩色

分享《精通Python爬蟲框架Scrapy》中文PDF+英文PDF+源代碼

其中 rap size href 代碼 mar ref png nag 下載:https://pan.baidu.com/s/13tFIFOhDM8PG9pFUuA8M2g 更多資料:http://blog.51cto.com/3215120 《精通Python爬蟲框架Sc

在linux和windows下安裝python爬蟲框架scrapy

一、在linux下安裝 1)先下python,2.7版本的; 2)再下pip.py檔案,然後執行:sudopythonget-pip.py 3)執行命令: pip install scrapy 二、在windows下安裝 非常的麻煩... 1)先下python,2.7版本

分享《精通Python爬蟲框架Scrapy》+PDF+源碼+迪米特裏奧斯+李斌

迪米特 pytho aid 源代碼 下載 51cto baidu mark roc 下載:https://pan.baidu.com/s/1-ruuQebCnyLVt5L8RATT-g 更多資料:http://blog.51cto.com/14087171 《精通Pytho

4-Python爬蟲框架-Scrapy

scrapy 爬蟲框架 框架 爬蟲框架 scrapy pyspider crawley scrapy框架介紹 https://doc.scrapy.org/en/latest/ http://scrapy-chs.readthe

Python爬蟲框架scrapy的用途及元件認識

Python爬蟲框架scrapy的用途及元件認識 今天簡述一下Scrapy框架的大致處理流程,以方便大家更好的理解Scrapy的執行過程. Scrapy是一個快速、高層次螢幕抓取和web抓取python爬蟲框架,主要用於抓取特定web站點的資訊並從頁面中提取結構化的資料。 由於Scr

Python爬蟲框架Scrapy介紹加實戰專案

Python爬蟲框架Scrapy介紹加實戰專案 Scrapy框架是非同步處理框架,可配置和可擴充套件程度非常高,是Python中使用最廣泛的爬蟲框架,這個框架非常的強大,幾乎能用來配合任何爬蟲專案。 專案要求:爬取騰訊招聘上的招聘資訊(連結: link.) 爬取資料要求:需要爬取,職

Python爬蟲框架Scrapy例項

2018Python學習資料下載 目標任務:爬取騰訊社招資訊,需要爬取的內容為:職位名稱,職位的詳情連結,職位類別,招聘人數,工作地點,釋出時間。 一、建立Scrapy專案 scrapy startproject Tencent 命令執行後,會建立一個Tencent資料夾,結構如下

Python爬蟲框架Scrapy

安裝wget: 下載一個Wget的原始碼包,http://www.gnu.org/software/wget/ 開啟終端進入下載目錄解壓, 1 輸入:tar zxvf wget-1.9.1.tar.gz 2 cd 進入到解壓的目錄 3 輸入:./configure 4 輸入:ma

Python爬蟲框架Scrapy例項(二)

目標任務:使用Scrapy框架爬取新浪網導航頁所有大類、小類、小類裡的子連結、以及子連結頁面的新聞內容,最後儲存到本地。 大類小類如下圖所示: 點選國內這個小類,進入頁面後效果如下圖(部分截圖): 檢視頁面元素,得到小類裡的子連結如下圖所示: 有子連結

Python爬蟲框架 scrapy之xpath選擇器 css選擇器

文章目錄 一 、xpath 1、節點選擇 二、 css css選擇 三、xpath函式操作 1