Python爬蟲之Selector的用法

2020-12-17 一起學python

引言

我們之前介紹了Beautiful Soup、pyquery以及正則表達式來提取網頁數據,這確實十分方便。而Scrapy還提供了自己的數據提取方法,即Selector(選擇器)。Selector是基於lxml來構建的,支持Xpath選擇器、CSS選擇器以及正則表達式,功能全面,解析速度和準確度非常高。本節我們將介紹Selector的用法。

直接使用

Selector是一個可以獨立使用的模塊。我們可以直接利用Selector這個類來構建一個選擇器對象,然後調用它的相關方法如xpath( )、css( )等來提取數據。

例如,針對一段HTML代碼,我們可以用如下方式構建Selector對象來提取數據:

運行結果如下:

我們在這裡沒有在Scrapy框架中運行,而是把Scrapy中的Selector單獨拿出來使用了,構建的時候傳入text參數,就生成了一個Selector選擇器對象,然後就可以像前面我們所用的Scrapy中的解析方式一樣,調用xpath( )、css( )等方法來提取了。

在這裡我們查找的是原始碼中的title中的文本,在Xpath選擇器最後加text( )方法就可以實現文本的提取了。

以上內容就是Selector的直接使用方法。同Beautiful Soup等庫類似,Selector其實也是強大的網頁解析庫。如果方便的話,我們也可以在其他項目中直接使用Selector來提取數據。

接下來,我們用實例來詳細講解Selector的用法。

Scrapy shell

由於Selector主要是與Scrapy結合使用,如Scrapy的回調函數中的參數response直接調用xpath( )或者css( )方法來提取數據,所以在這裡我們藉助Scrapy shell來模擬Scrapy請求的過程,來講解相關的提取方法。

我們用官方文檔的一個樣例界面來作為我們的演示:

接著我們就可以開啟Scrapy shell,在命令行輸入如下命令:

scrapy shell + 網址

這樣我們就進入到了scrapy shell模式。這個過程其實是,Scrapy發起了一次請求,請求的URL就是剛才命令行下輸入的URL,然後把一些可操作的變量傳遞給我們,如request、response等,如下所示:

我們可以在命令行模型下輸入命令調用對象的一些操作方法,回車之後實時顯示結果。這與Python命令行交互模式是類似的。

接下來,演示的實例都將頁面的源碼作為分析目標,頁面源碼如下所示:

相關焦點

  • Python爬蟲利器一之Requests庫的用法
    註:Python 版本依然基於 2.7前言之前我們用了 urllib 庫,這個作為入門的工具還是不錯的,對了解一些爬蟲的基本理念,掌握爬蟲爬取的流程有所幫助。入門之後,我們就需要學習一些更加高級的內容和工具來方便我們的爬取。那麼這一節來簡單介紹一下 requests 庫的基本用法。
  • 從零開始的python爬蟲速成指南
    小夥伴感興趣可以自取~此外,我這還有兩本比較經典的python爬蟲電子書,在微信公眾號【輪子工廠】後臺回復 」爬蟲」 可以領取。一、爬蟲入門Python爬蟲入門一之綜述Python爬蟲入門二之爬蟲基礎了解Python爬蟲入門三之Urllib庫的基本使用Python爬蟲入門四之Urllib庫的高級用法Python爬蟲入門五之URLError異常處理Python爬蟲入門六之Cookie的使用
  • 10-python爬蟲之lxml庫
    lxml 是一種使用 Python 編寫的庫,可以迅速、靈活地處理 XML ,支持 XPath (XML Path Language)lxml python
  • Python爬蟲的名詞有什麼意義?
    在上一篇文章當中學記給大家展示了 Scrapy 爬蟲框架在爬取之前的框架文件該如何設置。在上一篇文章當中,是直接以代碼的形式進行描述的,在這篇文章當中學記會解釋一下上一篇文章當中爬蟲代碼當中的一些名詞的用法。
  • Python爬蟲--Requests 庫用法大全
    昨晚分享了Python爬蟲的基本知識,本文分享一下爬蟲裡面請求相關的內容:Requests 用法。
  • 如何快速學會Python爬蟲(入門篇)
    Python爬蟲入門二之爬蟲基礎了解3. Python爬蟲入門三之Urllib庫的基本使用4. Python爬蟲入門四之Urllib庫的高級用法5. Python爬蟲入門五之URLError異常處理6.
  • python 爬蟲 | 解析庫之 XPath(1)
    自己學習 python 爬蟲已經有段時間了,但編程的學習過程總是邊學邊忘
  • Python無頭爬蟲Selenium系列(01):像手工一樣操作瀏覽器
    轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)作為"數據玩家",如果手頭上沒有數據怎麼辦?當然是用代碼讓程序自動化採集數據,但是現在"爬蟲"不是那麼容易,其中最困難的即是突破網站各種反爬機制。
  • Python爬蟲,批量獲取知網文獻信息
    於是,反手寫一個爬蟲,批量獲取基本信息,豈不美哉?在開始這個項目之前,我抱著不重複造輪子的心態,尋思著去Github先找找。結果發現基本上都是幾年前的項目,現在早已不能使用。最後證實了,靠別人不如靠自己,擼起袖子就開幹!1. 爬蟲基礎網絡爬蟲就是模擬瀏覽器發送網絡請求,接收請求響應,一種按照一定的規則,自動地抓取網際網路信息的程序。
  • Python爬蟲之urllib庫—爬蟲的第一步
    爬蟲的過程亦是如此,通過對伺服器發出請求得到HTML網頁,然後對下載的網頁進行解析,得到我們想要的內容。當然,這是一個爬蟲過程的一個概況,其中還有很多細節的東西需要我們處理的,這些在後續會繼續與大家分享。 了解了爬蟲的基本過程後,就可以開始我們真正的爬蟲之旅了。
  • Python爬蟲之基本庫的使用
    引言學習爬蟲,最初的操作便是模擬瀏覽器向伺服器發出請求,那麼我們需要從哪個地方開始做起呢?請求需要我們自己來構造嗎?需要關心請求這個數據結構的實現嘛?需要了解HTTP、TCP、IP層的網絡傳輸通信嗎?需要直到伺服器的響應和應答原理嗎?
  • Python爬蟲學習的完整路線推薦
    大數據時代,網際網路成為大量信息的載體,機械的複製粘貼不再實用,不僅耗時費力還極易出錯,這時爬蟲的出現解放了大家的雙手,以其高速爬行、定向抓取資源的能力獲得了大家的青睞。爬蟲變得越來越流行,不僅因為它能夠快速爬取海量的數據,更因為有python這樣簡單易用的語言使得爬蟲能夠快速上手。
  • python爬蟲很強大,在爬蟲裡如何自動操控瀏覽器呢?
    概述:python通過selenium爬取數據是很多突破封鎖的有效途徑。但在使用selenium中會遇到很多問題,本文就通過一問一答的形式來通熟易懂的普及如何通過selenium執行javascript程序,進而獲取動態執行後的網頁。如果你喜歡,歡迎轉發本文。python爬蟲編程:用selenium執行javascript出錯了,該咋改?
  • Python 爬蟲基礎入門篇——Requests模塊
    有你想要的精彩                前幾次推文介紹了頁面爬取的三種用法通過該頭部信息web伺服器可以判斷到當前HTTP請求的客戶端瀏覽器類別;我們在爬蟲的時候,有些網站限制了User-agent(查看網站的robots.txt文檔),所以需要在爬蟲的時候偽裝成瀏覽器去訪問;如果大家不知道寫啥可以去打開瀏覽器隨便找一個網站F12查看網絡請求的User-agent值就可以了;referer:
  • Spider-Learning—bs4提取—Selector爬取酷狗top500
    作者:徐浩 來源:人工智慧學習圈一、前言1.1 網絡爬蟲簡介「網絡爬蟲」又稱「網絡蜘蛛」。是一種在網際網路上自動採集數據的自動化程序,爬蟲的規模可大可小,大到百度,谷歌搜索,小到自動下載圖片等。採集數據,所採集的數據是結構化的,批量提取,提高效率的。
  • Python協程:概念及其用法
    文章思路:本文將先介紹協程的概念,然後分別介紹Python2.x與3.x下協程的用法,最終將協程與多線程做比較並介紹異步爬蟲模塊。協程概念協程,又稱微線程,纖程,英文名Coroutine。Python2.x協程python2.x協程應用:python2.x中支持協程的模塊不多,gevent算是比較常用的,這裡就簡單介紹一下gevent的用法。
  • 10個Python爬蟲入門實例
    涉及主要知識點:web是如何交互的requests庫的get、post函數的應用response對象的相關函數,屬性python文件的打開,保存代碼中給出了注釋,並且可以直接運行哦如何安裝requests庫(安裝好python的朋友可以直接參考,沒有的,
  • Python爬蟲html解析,還在用BeautifulSoup嗎?試試PyQuery吧
    在初學python時,大家都喜歡寫些小腳本來爬些網頁,因為這能在最短的時間讓我們達到一種小小的滿足感,通常我們解析網頁時有幾種方法:正則表達式匹配 - 比較低級用beautifulsoup、pyquery等包解析用scrapy、pyspider等框架來解析其實,方法
  • Python 爬蟲面試題 170 道
    8.了解 Python 之禪麼?9.了解 docstring 麼?10.了解類型註解麼?11.例舉你知道 Python 對象的命名規範,例如方法或者類等12.Python 中的注釋有幾種?@classmethod 和@staticmethod 用法和區別75.Python 中的接口如何實現?76.Python 中的反射了解麼?77.metaclass 作用?以及應用場景?
  • Python爬蟲常用庫之urllib詳解
    而當scheme協議加了,而前面的url也包含協議,一般會忽略後面的scheme參數既然後解析url,那當然也有反解析url,就是把元素串連成一個url1from urllib import parse2# 將列表元素拼接成url3url = ['http', 'www', 'baidu', 'com', 'dfdf', 'eddffa'] # 這裡至少需要