国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

快樂學Python,如何使用爬蟲從網(wǎng)頁中提取感興趣的內容?

這篇具有很好參考價值的文章主要介紹了快樂學Python,如何使用爬蟲從網(wǎng)頁中提取感興趣的內容?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前面的內容,我們了解了使用urllib3和selenium來下載網(wǎng)頁,但下載下來的是整個網(wǎng)頁的內容,那我們又怎么從下載下來的網(wǎng)頁中提取我們自己感興趣的內容呢?這里就需要Python的另一個庫來實現(xiàn)-BeautifulSoup。

BeautifulSoup 是一個 Python 庫,用于分析 HTML。它和它的名字一樣,用起來非常“香”。今天我們通過使用 BeautifulSoup 去從上一篇文章案例中下載到的 html 文件:jiandan.html 中提取所有新聞的標題。

打開 VS Code,并創(chuàng)建ipynb文件,將之前下載的jandan.html文件復制到源文件共同的文件夾內。

接下來我們將在這個 notebook 中對 jiandan.html 進行內容提取。

1、安裝BeautifulSoup

這里安裝的步驟和之前安裝selenium的步驟一樣。
我們去開始菜單 → Anaconda ,選擇 Anaconda Prompt,出現(xiàn)命令行界面。在命令行界面,輸入如下安裝命令:(BeautifulSoup 的 Python 包名為 bs4, 簡寫)

conda install bs4

回車執(zhí)行,之后在詢問會否確認時輸入 y 回車,等待安裝完畢,關閉即可。

(1)讀取html文件到Python

數(shù)據(jù)提取的第一步,我們首先需要將 html 文件加載到 Python 的變量中。在上一篇文章中,我們了解了通過文件對象來把 Python 變量寫進文件里,這里我們來嘗試用類似的代碼來將文件中的內容讀出來。

代碼如下,可以看到和寫入文件的代碼非常類似。

#?打開?jiandan.html,第二個參數(shù)?r,代表?read

#?open?函數(shù)返回一個文件對象,保存在變量?fo?中

fo?=?open("jiandan.html","r",encoding="utf-8")

#?調用文件對象的?read?函數(shù),該函數(shù)將文件的內容讀取到?Python?中

#?read?函數(shù)的返回值就會文件內容,我們保存在?html_content?中

html_content?=?fo.read()

#?關閉文件對象

fo.close()

#?打印?html_content?變量,看內容是否被正確加載

print(html_content)

執(zhí)行之后,輸出結果如下所示(打印的 html 文本太長,這里僅截圖示意)。

快樂學Python,如何使用爬蟲從網(wǎng)頁中提取感興趣的內容?,玩轉Python數(shù)據(jù)分析,python,爬蟲,開發(fā)語言

(2)創(chuàng)建BeautifulSoup對象

現(xiàn)在,我們已經(jīng)將文件的內容讀了出來,但是目前還是以一個超大的字符串的形式存儲在變量中。想要對其進行有效的分析,第一步我們先要構造一個 BeautifulSoup 的對象。代碼如下:

#?從?bs4?模塊中導入?BeautifulSoup?類

from?bs4?import?BeautifulSoup

#?創(chuàng)建一個?BeautifulSoup?的對象,并將剛才我們存儲網(wǎng)頁內容的變量作為參數(shù)

doc?=?BeautifulSoup(html_content)

#?打印?doc?對象的?title?屬性。

print(doc.title)

執(zhí)行上述代碼之后,BeautifulSoup 對象就被創(chuàng)建并存在變量 doc 中,為了測試是否創(chuàng)建成功,我們打印了 doc 對象的 title 屬性,輸出如下。

<title>

煎蛋 - 地球上沒有新鮮事

</title>

(3)BeautifulSoup 對象的基本使用

剛剛我們打印了 doc 對象的 title 屬性,來測試對象是否創(chuàng)建成功。從打印的內容來看,想必你已經(jīng)猜到了,doc 對象的 title 屬性,就對應了網(wǎng)頁的 title 標簽。但是剛才我們打印的內容中,title 標簽也被打印出來了。

那是否可以只取標簽里面的內容呢?

①get_text方法

在 BeautifulSoup 中,我們可以通過標簽對象的 get_text 方法來獲得標簽中的內容。

# 將 title 屬性保存在 title_label 的變量中

title_label?=?doc.title

# 調用 get_text 方法,并把返回值打印出來

print(title_label.get_text())

輸出如下:

煎蛋 - 地球上沒有新鮮事

可以看到,這次我們成功將標簽內的文字提取了出來。

②find_all方法

BeautifulSoup 對象另一個常用方法是 find_all, 用來在 html 文檔中查到特定標簽名以及特定屬性值的標簽,下面來舉例說明。

比如,在網(wǎng)頁上有這么個結構

快樂學Python,如何使用爬蟲從網(wǎng)頁中提取感興趣的內容?,玩轉Python數(shù)據(jù)分析,python,爬蟲,開發(fā)語言
目前我們的 doc 對象已經(jīng)包含了這些內容。現(xiàn)在我們來嘗試提取 class 等于 logo 的這個 div 標簽,代碼如下。

#?find_all?是?BeautifulSoup?對象的常用方法,用于查找特定的標簽

#?接受三個參數(shù),第一個是要查找的標簽名,第二個則是要匹配的屬性名

#?比如這里,我們查找的是?class=logo?標簽,則直接按如下寫法即可。

#?因為?class?是?Python?的關鍵字,所以這里需要使用?class_?以示區(qū)分

#?最終,find_all?函數(shù)返回所有滿足條件的標簽列表

logo_label?=?doc.find_all("div",?class_="logo")

print(logo_label)

輸出結果為:

[<div class="logo">

<h1><a href="/" onclick="ga('send', 'pageview','/header/logo');">煎蛋</a></h1>

</div>]

可以看到,我們截圖中的內容,箭頭所指的 div 標簽被成功的過濾了出來。

③獲取標簽對象的屬性

通過標簽對象的 attrs 屬性,我們可以獲取標簽對象的屬性的值,attrs 是一個字典,獲取屬性的值的方法如下:

#?取?logo_label?列表的第一個標簽對象

label?=?logo_label[0]

#?打印這個對象的?class?屬性

print(label.attrs["class"])

輸出:

['logo']

2、過濾出網(wǎng)頁的新聞列表

現(xiàn)在,我們來使用之前的 doc 對象來過濾出新聞的標題列表。

(1)觀察html,提取初步的新聞標簽列表

在使用 BeautifulSoup 進行內容過濾的第一步,首先要查看我們想要的內容所在的標簽。我們在 VS Code 中打開 jiandan.html,搜索“普通感冒”到達新聞標題內容區(qū)域,如下圖所示。

快樂學Python,如何使用爬蟲從網(wǎng)頁中提取感興趣的內容?,玩轉Python數(shù)據(jù)分析,python,爬蟲,開發(fā)語言
通過觀察截圖中的標簽內容,很容易發(fā)現(xiàn)似乎每個新聞標題,都有一個對應的 div 標簽,并且它的 class 是 indexs。沿著這個思路,我們可以先考慮使用 find_all 將其過濾出來。通過如下代碼。

#?查找?class?為?indexs?的所有?div?標簽,存儲在?index_labels?中

index_labels?=?doc.find_all("div",?class_="indexs")

#?打印符合條件的?div?標簽的數(shù)量

print(len(index_labels))

輸出:

24

說明找到了 24 個符合條件的 div 標簽。一個網(wǎng)頁的新聞也是 20 多條,說明有希望。

(2)提取單個標簽的新聞標題

因為 index_labels 是一個標簽對象的列表,距離我們要過濾的新聞標題還有距離。下一步,我們就來分析如何從這些標簽對象中抽取新聞標題。
首先,我們先取第一個來看一下。

first_object?=?index_labels[0]

print(first_object)

輸出如下:

<div class="indexs">

<span class="comment-link" title="1小時 ago">8</span>

<h2><a  target="_blank">引發(fā)普通感冒的鼻病毒會將新冠病毒排擠出細胞!</a></h2>

<div class="time_s"><a >majer</a> · <strong><a  rel="tag">新冠病毒</a></strong></div>

換而言之,如果你感冒了,在那段期間就不會被新冠病毒感染 </div>

現(xiàn)在我們的問題就轉化為,如何從上述 html 中抽取出新聞的標題。

通過查看上述內容可以發(fā)現(xiàn),我們的標題在第三行,在一個 a 標簽內部。那是不是我們只需要過濾出這個 a 標簽,再使用 get_text 拿到里面的內容就好了?

那要怎么過濾出第三行的 a 標簽呢?可以看到這個 a 標簽里有 target=“_blank” 這樣一個屬性,我們就可以使用 find_all 將其過濾出來了。

#?從剛才的?first_object?標簽對象中過濾出所有?target=_blank?的?a?標簽

a_labels?=?first_object.find_all("a",target="_blank")

#?取第一個標簽對象

my_label?=?a_labels[0]

#?打印該標簽對象內的文字內容

print(my_label.get_text())

輸出如下:

引發(fā)普通感冒的鼻病毒會將新冠病毒排擠出細胞!

你看,新聞的標題被成功抽取了出來!

(3)提取新聞標題的列表

目前,我們已經(jīng)實現(xiàn)了從第一個標簽對象中提取新聞標題,但我們的列表中有 24 個標簽對象。要怎么做呢?聰明的你應該想到了,我們只需要把“從標簽對象抽取標題”這段邏輯寫成一個函數(shù),然后通過一個循環(huán)對列表的每個標簽對象都調用這個函數(shù)即可。

#?從第一次?find_all?獲取的標簽對象中抽取標題

def?get_title(label_object):

????#?從剛才的參數(shù)傳入的標簽對象中過濾出所有?target=_blank?的?a?標簽

????a_labels?=?label_object.find_all("a",target="_blank")

????#?取第一個標簽對象

????my_label?=?a_labels[0]

????#?將標簽的文字內容作為返回值返回

????return?my_label.get_text()

#?用循環(huán)針對每個?index_labels?列表中的標簽對象

#?都將其作為參數(shù)傳入?get_title?函數(shù)

#?并打印返回值

for?i?in?range(0,len(index_labels)):

????title?=?get_title(index_labels[i])

????print(title)

執(zhí)行后輸出:

引發(fā)普通感冒的鼻病毒會將新冠病毒排擠出細胞!

無厘頭研究:植入虛假的記憶再抹去它們

什么是仇恨犯罪?

突發(fā):LHCb發(fā)現(xiàn)了違背標準模型的現(xiàn)象

今日帶貨 20210324

舌戰(zhàn)裸猿:IBM搞出了可以打辯論賽的AI

大吐槽:「我沒醉,醉的是世界」

今年世界總發(fā)電量的0.6%被用于挖比特幣

接種疫苗后還是感染新冠?不要為此驚訝

今日帶貨:蛋友家的血橙

科學家首次在野外檢測到抗多藥的超級真菌

未在iPhone12盒中搭配充電器,蘋果被巴西消協(xié)罰200萬美元

工程師將解決城市陷坑的問題

今日帶貨:粉面專場

科學家在碟子里培育出了淚腺,并讓它哭泣

瘋狂實驗進行時:把志愿者禁閉在黑暗的空間里40天

今日帶貨 20210321

我們已向外星人發(fā)送了哪些消息?

腦力小體操:石頭+剪刀 VS 石頭+布

發(fā)霉啦:今天,我終于向母親攤牌了

普渡大學的經(jīng)濟學家計算出世界各地幸福的價格

人類首次觀察到木星上極光黎明風暴的成形過程

為女兒出頭,母親編輯假裸照敗壞高中啦啦隊隊員的名譽

今日帶貨:淘寶京東蛋友推薦

可以看到,jiandan.html 中的所有新聞標題被我們成功過濾了出來,現(xiàn)在是不是感受到了 BeautifulSoup 的神奇之處了呢。

至此,我們就完成了使用 BeautifulSoup 對網(wǎng)頁進行內容的提取。文章來源地址http://www.zghlxwxcb.cn/news/detail-799854.html

到了這里,關于快樂學Python,如何使用爬蟲從網(wǎng)頁中提取感興趣的內容?的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 爬蟲:使用Selenium模擬人工操作及獲取網(wǎng)頁內容

    結合自身經(jīng)驗和內部資料總結的Python教程,每天3-5章,最短1個月就能全方位的完成Python的學習并進行實戰(zhàn)開發(fā),學完了定能成為大佬!加油吧!卷起來! 全部文章請訪問專欄:《Python全棧教程(0基礎)》 再推薦一下最近熱更的:《大廠測試高頻面試題詳解》 該專欄對近年

    2024年02月13日
    瀏覽(24)
  • 爬蟲(三):使用Selenium模擬人工操作及獲取網(wǎng)頁內容

    結合自身經(jīng)驗和內部資料總結的Python教程,每天3-5章,最短1個月就能全方位的完成Python的學習并進行實戰(zhàn)開發(fā),學完了定能成為大佬!加油吧!卷起來! 全部文章請訪問專欄:《Python全棧教程(0基礎)》 再推薦一下最近熱更的:《大廠測試高頻面試題詳解》 該專欄對近年

    2024年02月11日
    瀏覽(17)
  • 快樂學Python,使用爬蟲爬取電視劇信息,構建評分數(shù)據(jù)集

    快樂學Python,使用爬蟲爬取電視劇信息,構建評分數(shù)據(jù)集

    在前面幾篇文章中,我們了解了Python爬蟲技術的三個基礎環(huán)節(jié):下載網(wǎng)頁、提取數(shù)據(jù)以及保存數(shù)據(jù)。 這一篇文章,我們通過實際操作來將三個環(huán)節(jié)串聯(lián)起來,以國產(chǎn)電視劇為例,構建我們的電視劇評分數(shù)據(jù)集。 收集目前國產(chǎn)電視劇的相關數(shù)據(jù),需要構建國產(chǎn)電視劇和評分的

    2024年01月21日
    瀏覽(45)
  • Python怎么讓頁面等待?Python爬蟲如何等待網(wǎng)頁加載完成

    Python怎么讓頁面等待?Python爬蟲如何等待網(wǎng)頁加載完成

    現(xiàn)在的很多網(wǎng)頁都會使用Ajax這種異步加載的技術來提高網(wǎng)頁的瀏覽體驗,而異步加載就是讓一部分元素在點擊或者執(zhí)行了某些操作時才會加載出來,而這對python爬蟲程序會造成很大的影響。下面會來給大家介紹一下python爬蟲讓網(wǎng)頁等待加載的方法,往下看看吧。 之所以要使

    2024年02月20日
    瀏覽(14)
  • 使用Python和Selenium抓取網(wǎng)頁內容

    使用Python和Selenium抓取網(wǎng)頁內容

    采集動態(tài)網(wǎng)頁是困擾許多人的難題,不妨使用 Python 和 Selenium抓取網(wǎng)頁數(shù)據(jù)。 微信搜索關注《Python學研大本營》,加入讀者群,分享更多精彩 你是否對從網(wǎng)站提取數(shù)據(jù)感興趣,但發(fā)現(xiàn)自己被網(wǎng)絡抓取的復雜性所困擾?不要害怕,我們在這篇文章中將展示如何利用 Selenium 和

    2024年02月07日
    瀏覽(49)
  • Python爬蟲進階:使用Scrapy庫進行數(shù)據(jù)提取和處理

    在我們的初級教程中,我們介紹了如何使用Scrapy創(chuàng)建和運行一個簡單的爬蟲。在這篇文章中,我們將深入了解Scrapy的強大功能,學習如何使用Scrapy提取和處理數(shù)據(jù)。 在Scrapy中,提取數(shù)據(jù)主要通過Selectors來完成。Selectors基于XPath或CSS表達式的查詢語言來選取HTML文檔中的元素。你

    2024年02月09日
    瀏覽(30)
  • Python爬蟲-爬取文檔內容,如何去掉文檔中的表格,并保存正文內容

    Python爬蟲-爬取文檔內容,如何去掉文檔中的表格,并保存正文內容

    前言 本文是該專欄的第58篇,后面會持續(xù)分享python爬蟲干貨知識,記得關注。 做過爬蟲項目的同學,可能或多或少爬取過文檔數(shù)據(jù),比如說“政務網(wǎng)站,新聞網(wǎng)站,小說網(wǎng)站”等平臺的文檔數(shù)據(jù)。爬取文檔數(shù)據(jù),筆者這里就不過多詳述,而本文, 筆者將主要介紹在爬取文檔

    2024年02月08日
    瀏覽(28)
  • scrapy爬蟲爬取多網(wǎng)頁內容

    摘要 :此案例是爬取目標網(wǎng)站( https://tipdm.com/ )的 新聞中心 板塊的 公司新聞 中所有新聞的標題、發(fā)布時間、訪問量和新聞的文本內容。 我使用的是 Anaconda prompt 我們使用如下命令創(chuàng)建scrapy項目: scrapy startproject spider_name 爬蟲路徑 spider_name 是項目的名字 爬蟲路徑 就是項目

    2023年04月21日
    瀏覽(26)
  • Python 網(wǎng)頁爬蟲原理及代理 IP 使用

    Python 網(wǎng)頁爬蟲原理及代理 IP 使用

    目錄 前言 一、Python 網(wǎng)頁爬蟲原理 二、Python 網(wǎng)頁爬蟲案例 步驟1:分析網(wǎng)頁 步驟2:提取數(shù)據(jù) 步驟3:存儲數(shù)據(jù) 三、使用代理 IP 四、總結 前言 隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡上的信息量變得越來越龐大。對于數(shù)據(jù)分析人員和研究人員來說,獲取這些數(shù)據(jù)是一項重要的任務。Python

    2024年02月09日
    瀏覽(28)
  • Python使用Selenium Webdriver爬取網(wǎng)頁所有內容

    Python使用Selenium Webdriver爬取網(wǎng)頁所有內容

    有時候,我們在用urllib或者requests庫抓取頁面時,得到的html源代碼和瀏覽器中看到的不一樣。這將是我們面臨的一個非常常見的問題?,F(xiàn)在網(wǎng)頁越來越多地采用Ajax、前端模塊化工具來構建,整個網(wǎng)頁可能都是由JavaScript渲染出來的,也就是說原始的HTML代碼可能就是一個空殼,

    2023年04月08日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包