從零開始學(xué)習(xí)Python與BeautifulSoup網(wǎng)頁數(shù)據(jù)抓取
在網(wǎng)絡(luò)時(shí)代,數(shù)據(jù)是最寶貴的資源之一。而爬蟲技術(shù)就是一種獲取數(shù)據(jù)的重要手段。Python 作為一門高效、易學(xué)、易用的編程語言,自然成為了爬蟲技術(shù)的首選語言之一。而 BeautifulSoup 則是 Python 中最常用的爬蟲庫之一,它能夠幫助我們快速、簡單地解析 HTML 和 XML 文檔,從而提取出我們需要的數(shù)據(jù)。
本文將介紹如何使用 BeautifulSoup 爬取網(wǎng)頁數(shù)據(jù),并提供詳細(xì)的代碼和注釋,幫助讀者快速上手。
安裝 BeautifulSoup
在開始之前,我們需要先安裝 BeautifulSoup??梢允褂?pip 命令進(jìn)行安裝:
pip install beautifulsoup4
爬取網(wǎng)頁數(shù)據(jù)
在本文中,我們將以爬取豆瓣電影 Top250 為例,介紹如何使用 BeautifulSoup 爬取網(wǎng)頁數(shù)據(jù)。
首先,我們需要導(dǎo)入必要的庫:
import requests from bs4 import BeautifulSoup
然后,我們需要獲取網(wǎng)頁的 HTML 代碼??梢允褂?requests 庫中的 get() 方法來獲取網(wǎng)頁:
url = 'https://movie.douban.com/top250' response = requests.get(url) html = response.text
接下來,我們需要使用 BeautifulSoup 解析 HTML 代碼??梢允褂?BeautifulSoup 的構(gòu)造方法來創(chuàng)建一個(gè) BeautifulSoup 對象:
soup = BeautifulSoup(html, 'html.parser')
這里我們使用了 ‘html.parser’ 作為解析器,也可以使用其他解析器,如 lxml、html5lib 等。
現(xiàn)在,我們已經(jīng)成功地將網(wǎng)頁的 HTML 代碼解析成了一個(gè) BeautifulSoup 對象。接下來,我們可以使用 BeautifulSoup 對象中的方法來提取我們需要的數(shù)據(jù)。
提取數(shù)據(jù)
在豆瓣電影 Top250 頁面中,每個(gè)電影都包含了電影名稱、導(dǎo)演、演員、評分等信息。我們可以使用 BeautifulSoup 提供的 find()、find_all() 等方法來提取這些信息。
首先,我們需要找到包含電影信息的 HTML 元素??梢允褂脼g覽器的開發(fā)者工具來查看網(wǎng)頁的 HTML 代碼,找到對應(yīng)的元素。在豆瓣電影 Top250 頁面中,每個(gè)電影都包含在一個(gè) class 為 ‘item’ 的 div 元素中:
<div class="item"> <div class="pic"> <em class="">1</em> <a > <img src="https://img9.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg" class="" /> </a> </div> <div class="info"> <div class="hd"> <a class=""> <span class="title">肖申克的救贖</span> <span class="title"> / The Shawshank Redemption</span> <span class="other"> / 月黑高飛(港) / 刺激1995(臺)</span> </a> <span class="playable">[可播放]</span> </div> <div class="bd"> <p class=""> 導(dǎo)演: 弗蘭克·德拉邦特 Frank Darabont 主演: 蒂姆·羅賓斯 Tim Robbins /...<br /> 1994 / 美國 / 犯罪 劇情 </p> <div class="star"> <span class="rating5-t"></span> <span class="rating_num" property="v:average">9.7</span> <span property="v:best" content="10.0"></span> <span>1057904人評價(jià)</span> </div> <p class="quote"> <span class="inq">希望讓人自由。</span> </p> </div> </div> </div>
我們可以使用 find_all() 方法來找到所有 class 為 ‘item’ 的 div 元素:
items = soup.find_all('div', class_='item')
這里我們使用了 class_ 參數(shù)來指定 class 屬性,因?yàn)?class 是 Python 中的關(guān)鍵字。
現(xiàn)在,我們已經(jīng)成功地找到了所有電影的 HTML 元素。接下來,我們可以使用 BeautifulSoup 對象中的方法來提取電影信息。
例如,我們可以使用 find() 方法來找到電影名稱所在的 HTML 元素:
title = item.find('span', class_='title').text
這里我們使用了 text 屬性來獲取 HTML 元素的文本內(nèi)容。
類似地,我們可以使用其他方法來提取導(dǎo)演、演員、評分等信息。完整的代碼如下:
import requests from bs4 import BeautifulSoup url = 'https://movie.douban.com/top250' response = requests.get(url) html = response.text soup = BeautifulSoup(html, 'html.parser') items = soup.find_all('div', class_='item') for item in items: title = item.find('span', class_='title').text director = item.find('div', class_='bd').p.text.split()[1] actors = item.find('div', class_='bd').p.text.split()[2:] rating = item.find('span', class_='rating_num').text print('電影名稱:', title) print('導(dǎo)演:', director) print('演員:', ' '.join(actors)) print('評分:', rating) print('------------------------')
總結(jié)
本文介紹了如何使用 BeautifulSoup 爬取網(wǎng)頁數(shù)據(jù),并提供了詳細(xì)的代碼和注釋。通過本文的學(xué)習(xí),讀者可以掌握如何使用 BeautifulSoup 解析 HTML 和 XML 文檔,從而提取出需要的數(shù)據(jù)。同時(shí),讀者也可以將本文中的代碼應(yīng)用到其他網(wǎng)頁數(shù)據(jù)的爬取中。
到此這篇關(guān)于從零開始學(xué)習(xí)Python與BeautifulSoup網(wǎng)頁數(shù)據(jù)抓取的文章就介紹到這了,更多相關(guān)BeautifulSoup 爬取網(wǎng)頁數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python BeautifulSoup使用方法詳解
- Python BeautifulSoup [解決方法] TypeError: list indices must be integers or slices, not str
- Python BeautifulSoup中文亂碼問題的2種解決方法
- python 解析html之BeautifulSoup
- Python爬蟲庫BeautifulSoup獲取對象(標(biāo)簽)名,屬性,內(nèi)容,注釋
- python中bs4.BeautifulSoup的基本用法
- python基于BeautifulSoup實(shí)現(xiàn)抓取網(wǎng)頁指定內(nèi)容的方法
- Python使用BeautifulSoup庫解析HTML基本使用教程
- python爬蟲之BeautifulSoup 使用select方法詳解
- python爬蟲入門教程--HTML文本的解析庫BeautifulSoup(四)
相關(guān)文章
python numpy中mat和matrix的區(qū)別
這篇文章主要介紹了python numpy中mat和matrix的區(qū)別,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03如何解決Keras載入mnist數(shù)據(jù)集出錯(cuò)的問題
這篇文章主要介紹了解決Keras載入mnist數(shù)據(jù)集出錯(cuò)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05tensorflow卷積神經(jīng)Inception?V3網(wǎng)絡(luò)結(jié)構(gòu)代碼解析
這篇文章主要為大家介紹了卷積神經(jīng)Inception?V3網(wǎng)絡(luò)結(jié)構(gòu)代碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05利用python實(shí)現(xiàn)漢字轉(zhuǎn)拼音的2種方法
這篇文章主要給大家介紹了關(guān)于如何利用python實(shí)現(xiàn)漢字轉(zhuǎn)拼音的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Django中數(shù)據(jù)庫的數(shù)據(jù)關(guān)系:一對一,一對多,多對多
今天小編就為大家分享一篇關(guān)于Django中數(shù)據(jù)庫的數(shù)據(jù)關(guān)系:一對一,一對多,多對多,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-10-10使用Python爬蟲庫BeautifulSoup遍歷文檔樹并對標(biāo)簽進(jìn)行操作詳解
今天為大家介紹下Python爬蟲庫BeautifulSoup遍歷文檔樹并對標(biāo)簽進(jìn)行操作的詳細(xì)方法與函數(shù)2020-01-01