Ptyhon網絡爬蟲第五篇

2021-01-07 星星星星風

Ptyhon網絡爬蟲(第五篇)——網頁解析

正則表達式BeautifulSoupLxml

正則表達式——對字符串操作的邏輯公式1:介紹

用事先定義好的特定字符和這些特定的字符的組合組成一個規則字符串,用來表達對字符串的一種過濾邏輯。好比人工智慧中的謂詞邏輯:小明喜歡貓,小明也喜歡金魚,用小明去匹配到貓和金魚的有個過程。

提取網頁中的數據時,先把原始碼變成字符串,然後用正則表達式匹配想要的數據。

常見的正則字符和含義如下表

2:Python正則表達式的三種方法

re.match:從字符串起始位置匹配一個模式,如果從起始位置匹配不了,match()就返回none。

語法:re.match(pattern,string,flag=0)

pattern是正則表達式包含一些特殊的字符

string為要匹配的字符串

flags用來控制正則表達式的匹配方式:是否區分大小寫、多行匹配等

匹配具有一定模式的字符串:

其中r『(.*)is(.*!)』的r代表rawstring 純粹的字符串,使用它就不會對引號裡面的反斜槓「\」進行特殊處理。

兩個反斜槓「字符串轉義」會把「\\」轉義為「\」。

使用r『……』,原始字符串的方法,不會對引號裡面的反斜槓『\』進行特殊處理。

正則表達式的轉義:

需要匹配的r『5\9』中的字符「\」,使用程式語言表示的正則表達式裡需要4個反斜槓「\\\\」:前兩個反斜槓「\\」和後兩個反斜槓「\\」各自在字符串轉義成一個反斜槓「\」,4個反斜槓「\\\\」就轉義成了兩個反斜槓「\\」,這兩個反斜槓「\\」最終在正則表達式轉義成一個反斜槓「\」

使用了r『...』方法後,不需要進行字符轉義,直接進入第二步「正則轉義」,在正則轉義中「」

正則表達式要經過「字符串轉義」和「正則轉義」

如果不用r『…』方法的話,就需要進行「字符串轉義」和「正則轉義」

re.search:掃描整個字符串並返回第一個成功的匹配

re.match只能從字符串的起始位置進行匹配,「.com」在後面,所以匹配不到。

其他方面re.search與re.match一樣,可以參照上面的re.match來操作。

re.findall:可以找到所有的匹配結果,如下:

Pattern:』[0-9]+』:任意長度的數字

例如:爬取百度熱榜

import requestsimport relink='https://www.baidu.com/'headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ''(KHTML, like Gecko) Chrome/87.0.4280.88 Safari' '/537.36 Edg/87.0.664.66','Host':'www.baidu.com'}r=requests.get(url=link,headers=headers)print(r.status_code)html=r.texttitle_list=re.findall('<span>(.*?)</span>',html)print(title_list)

上述代碼用於提取百度熱榜詞條,使用findall匹配,使用'<span>(.*?)</span>'正則表達式表示對所有滿足此條件的結果。表示只提取(.*?)部分。

使用BeautifulSoup解析網頁BeautifulSoup可以從HTML或XML文件中提取數據。可以提供一些簡單的、Python式的函數用來處理導航搜索、修改分析樹等。

例如:爬取百度熱榜

import requestsfrom bs4 import BeautifulSouplink='https://www.baidu.com/'headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ''(KHTML, like Gecko) Chrome/87.0.4280.88 ' 'Safari/537.36 Edg/87.0.664.66'}r=requests.get(url=link,headers=headers)soup=BeautifulSoup(r.text,'lxml')title_list=soup.find_all('span',class_='title-content-title')i=1for i in range(len(title_list)): title=title_list[i].text print(i+1,':',title)

BeautifulSoup對象是一個複雜的樹形結構,他的每一個節點都是一個Python對象,獲取網頁的內容就是一個提取對象內容的過程。

提取對象的方法:

1:遍歷文檔樹:好比爬樹:樹幹——小樹幹——樹枝

2:搜索文檔樹:在搜索文檔樹時,最常用的是find()、find_all()。第一章已提到

3:CSS選擇器:可作為遍歷文檔樹的方法提取數據,也可作為搜索文檔樹的方法提取數據。

使用lxml解析網頁Lxml使用C語言編寫,解析速度比不使用lxml的BeautifulSoup快一些。和BeautifulSoup相比,lxml還多了一種Xpath選擇器的方法。Xpath是一門在XML文檔中查找信息的語言,通過使用路徑表達式來選取XML文檔中的節點或節點集,也可以用在HTML獲取數據中。

import requestsfrom lxml import etreelink='https://www.baidu.com/'headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ''(KHTML, like Gecko) Chrome/87.0.4280.88 ' 'Safari/537.36 Edg/87.0.664.66'}r=requests.get(url=link,headers=headers)html=etree.HTML(r.text)title_list=html.xpath('//span[@class="title-content-title"]/text()')print(title_list)

運行結果:

此例同為百度熱點

其中,「//span」代表選取所有<span>子元素,「//」無論在文檔中的什麼位置,後面加上[@class=」title-content-title」]表示選取<span>中class的「title-content-title」的元素,/text()表示提取<span>元素中的所有文本。

Xpath的選取方法——沿著路勁來選取的,如表:

上例子中「//span」:選取所有的span元素,無論它們在文檔中的什麼位置

關注我,獲取更多小技能!

相關焦點

  • Python 從零開始--入門篇
    從這篇文章開始我將分享 python 系列,從 ptyhon 的起始發展,到現在的方方面面, 從最基礎的語法開始,大家一起學習
  • 精通 Python 網絡爬蟲:網絡爬蟲學習路線
    如何才能精通Python網絡爬蟲呢?學習Python網絡爬蟲的路線應該如何進行呢?在此為大家具體進行介紹。
  • 網絡爬蟲違法?扯!繼續學習我的第一個爬蟲
    ,文章裡寫了因為一名技術人員因爬取數據被抓,那麼爬蟲真的違法嗎?今天我們來探索一下。1網絡爬蟲犯法嗎?網絡爬蟲的約束除了上述Robots協議之外,我們使用網絡爬蟲的時候還要對自己進行約束:過於快速或者頻密的網絡爬蟲都會對伺服器產生巨大的壓力,網站可能封鎖你的IP,甚至採取進一步的法律行動。因此,你需要約束自己的網絡爬蟲行為,將請求的速度限定在一個合理的範圍之內。
  • 漫談Pyspider網絡爬蟲的實踐
    什麼是網絡爬蟲來一段靠譜的維基百科的權威解釋網絡蜘蛛(Web spider)也叫網絡爬蟲(Web crawler),螞蟻(ant),自動檢索工具(automatic indexer),或者(在FOAF軟體概念中)網絡疾走(WEB scutter),是一種「自動化瀏覽網絡」的程序,或者說是一種網絡機器人。
  • 如何快速學會Python爬蟲(入門篇)
    Python爬蟲進階四之PySpider的用法第二(第一的姊妹篇):Python爬蟲入門教程Python版本:2.7教程目錄:[Python]網絡爬蟲(一):抓取網頁的含義和URL基本構成[Python]網絡爬蟲(二):利用urllib2通過指定的URL抓取網頁內容[Python]網絡爬蟲(三):異常的處理和HTTP狀態碼的分類[Python]網絡爬蟲(四):Opener與Handler的介紹和實例應用[Python
  • Python網絡爬蟲第七篇——數據存儲
    Python網絡爬蟲(第七篇)——數據存儲存儲在文件中,包括TXT文件和CSV文件存儲在MySQL資料庫中。創建資料庫:例如創建網絡爬蟲的資料庫,在界面庫輸入create database scrapying;按下Ctrl+Enter後沒報錯就顯示創建了一個scrapying 的資料庫創建之後所有的命令都會運行在這個資料庫中,除非切換到另一資料庫(use another;)創建數據表並查看:這個剛創建的資料庫什麼都沒有,我們需要在這個scrapying
  • 網絡爬蟲(一)
    記得先點數據科學與人工智慧關注我哦~《Python學習》專欄·第2篇文 | 段洵  1099字 | 5爬蟲是按照一定規則,自動地提取並保存網頁中信息的程序。通過向網站發起請求獲取資源,提取其中有用的信息。爬蟲在獲取信息、整理數據等方面應用廣泛。
  • 手把手教你寫網絡爬蟲(5):PhantomJS實戰
    本系列:《手把手教你寫網絡爬蟲(1):網易雲音樂歌單》《手把手教你寫網絡爬蟲(2):迷你爬蟲架構》
  • Python程式語言:使用網絡爬蟲獲取大學排名
    上一篇文章,和大家分享的是如何獲取信息標記的知識,這篇文章,小編要和大家分享的是使用Python網絡爬蟲技術來獲取大學排名!當我們想要了解大學排名時,如何在雜亂的網頁信息上,快速獲取我們想要的大學排名信息了!這裡就需要用到Python網絡爬蟲提取信息的技術了!大學排名的程序代碼如下:
  • 手把手教你寫網絡爬蟲:Web應用的漏洞檢測實戰篇!
    作為剛入門的安全小白,對其工作原理產生了濃厚的興趣,逐漸深層剝離Web應用漏洞檢測的本質是網絡爬蟲技術與漏洞檢測技術的結合,網絡爬蟲主要爬取網站結構並收集可能存在的攻擊面,漏洞檢測技術則是在爬蟲結果的基礎上進行針對性的修改並重放,根據伺服器響應進行判斷。在本篇文章中,我們將重點介紹爬蟲技術方面的知識。
  • Xpath語法-網絡爬蟲基礎
    前言這一章節主要講解Xpath的基礎語法,學習如何通過Xpath獲取網頁中我們想要的內容;為我們的後面學習Java網絡爬蟲基礎準備工作。備註:此章節為基礎核心章節,未來會在網絡爬蟲的數據解析環節經常使用,學會Xpath解析語法,可為未來爬蟲解析省去很多麻煩。Xpath簡介XPath即為XML路徑語言,它是一種用來確定XML(標準通用標記語言的子集)文檔中某部分位置的語言。
  • 從零開始的 Python 爬蟲速成指南,10篇 Python 技術熱文
    (點擊上方公眾號,可快速關注)本文精選了 Python開發者 1月份的10篇 Python 熱文。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python視頻教程 2020年07月08日 11:00作者:黃頁編輯:黃頁
  • 2018年6月份Python網絡爬蟲與文本挖掘
    ,要在短時間內獲取大量信息,網絡爬蟲無疑是一種最適合的方法。為提升相關科技工作者的技術水平,北京博宏科睿教育科技有限公司特舉辦2018年第二期「Python爬蟲與文本挖掘實例技術與應用」培訓班,本次培訓從爬蟲的基本知識入手,使用Python作為實現工具,一步步講述網絡爬蟲的實現,具體內容如下:            【培訓目標】 1.讓學員儘快掌握python語言的基本結構與語法與數據類型,模塊、
  • 網絡爬蟲(一)基礎知識
    我們今天講的爬蟲呢,其實也是一種網絡檢索,就是用一個「爬蟲」來代替我們去檢索。從爬蟲這個名字我們就可以想像到它就是通過編程實現的一隻「小蟲子」在整個網際網路上爬來爬去。我們可以編寫不同的小蟲子,讓它在網絡上替我們搜集我們想要的資源。
  • 程式設計師日常(四)網絡之爬蟲(一)
    > Application+WebRequest+Filter+Data+Threads爬蟲是否違法?爬蟲能拿到的數據都是瀏覽器能訪問到的,是公開的數據不要基於盈利牢記上面兩點,爬蟲並不違法爬蟲攻防robot協議(道德防線):根域名
  • 從零開始的python爬蟲速成指南
    進入正題:對於入門的小夥伴,首先需要解決四個問題:熟悉Python編程;了解HTML;了解網絡爬蟲的基本原理;學習使用Python爬蟲庫.所以我把這篇文章同步更新到知乎上去了,在知乎上可以直接點擊標題跳轉到相應的文章。大家翻到文末,點擊左下角「閱讀原文」就可以找到知乎上的這篇內容了。本文一共整理了126篇爬蟲相關的文章,大家可以通過這個目錄系統的學習爬蟲,也可以收藏起來,當做字典查詢。建議先點擊「閱讀原文」,打開知乎上的這篇文章,然後再收藏。
  • Python網絡爬蟲實戰(一)快速入門
    本系列從零開始闡述如何編寫Python網絡爬蟲,以及網絡爬蟲中容易遇到的問題,比如具有反爬,加密的網站,還有爬蟲拿不到數據,以及登錄驗證等問題
  • 第7天|10天搞定Python網絡爬蟲,Scrapy爬更快
    說了好幾天用requests進行網絡爬蟲編程了,是時候換成專業,高效率的爬蟲庫--Scrapy了。我之所以一開始用requests,就想告訴你,網絡爬蟲,方法挺多的,合適就行。還有在之前說的各種解析庫,在Scrapy中,也會經常用到,特別是Lxml的XPath。如果之前不說,留到現在還得說。
  • 用python寫網絡爬蟲的基本要點
    1、網絡爬蟲(在網絡的網站中通過python的程序模擬人工操作,下載到自己需要的資料)1、定義 :網絡蜘蛛、網絡機器人,抓取網絡數據的程序 2、總結 :用Python程序去模仿人去訪問網站,模仿得越像越好