欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python數(shù)據(jù)解析BeautifulSoup爬取三國演義章節(jié)示例

 更新時間:2021年09月29日 15:04:40   作者:小緣喵~  
這篇文章主要介紹了python數(shù)據(jù)解析BeautifulSoup爬取三國演義章節(jié)示例,文中附含詳細(xì)示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助

數(shù)據(jù)解析

數(shù)據(jù)解析就是將爬取到的整個頁面中的局部的內(nèi)容進(jìn)行提取。python中常用的數(shù)據(jù)解析方式有以下三種:

  • bs4(python中獨有的)
  • xpath(推薦,通用型強)
  • 正則

數(shù)據(jù)解析原理概述:

首先我們知道需要解析(提?。┑膬?nèi)容都會在標(biāo)簽之間或者標(biāo)簽對應(yīng)的屬性中進(jìn)行存儲

所以我們需進(jìn)行指定標(biāo)簽的定位

然后將標(biāo)簽或者標(biāo)簽對應(yīng)的屬性中存儲的數(shù)據(jù)值進(jìn)行提取(解析)

Beautiful Soup

Beautiful Soup 是一個可以從HTML或XML文件中提取數(shù)據(jù)的Python庫。其只能運用在python語言中

bs4數(shù)據(jù)解析原理

實例化一個BeautifulSoup對象,并且將頁面源碼數(shù)據(jù)加載到該對象中。而將頁面源碼數(shù)據(jù)加載到該對象中有兩種方式,一種是將本地得html文檔加載,另一種是將互聯(lián)網(wǎng)上獲取的頁面源碼加載通過

調(diào)用BeautifulSoup對象中相關(guān)的屬性或者方法進(jìn)行標(biāo)簽定位和數(shù)據(jù)提取

要使用bs4首先需要先下載對應(yīng)的包

pip install bs4

pip install -i https://mirrors.aliyun.com/pypi/simple/ lxml

Beautiful Soup用法

提取整個標(biāo)簽數(shù)據(jù)

進(jìn)行標(biāo)簽定位常用的幾個方法如下

soup.標(biāo)簽名 返回的是html中第一次出現(xiàn)的標(biāo)簽

soup.find(標(biāo)簽名) 返回第一次出現(xiàn)的這個標(biāo)簽

soup.find_all(標(biāo)簽名)) 返回符合要求的所有標(biāo)簽

soup.select(標(biāo)簽名) 返回符合要求的所有標(biāo)簽

from bs4 import BeautifulSoup    #導(dǎo)包
html = """
<html lang="en">
    <head>
      <meta charset="utf-8">
      <meta name="theme-color" content="#ffffff">
      <base href="./" rel="external nofollow" ><link rel="stylesheet" href="styles.30d0912c1ece284d8d9a.css" rel="external nofollow" >
    </head>
    <body>
        <div>
            <p>百里守約</p>
        </div>
        <div class="song">
            <p>前程似錦</p>
        </div>
        <div class="song">
            <p>前程似錦2</p>
        </div>
        <div class="ming">  #后面改了名字
            <p>以夢為馬</p>
        </div>  
        <div class="tang">
            <ul>
                <li><a  title='qing'>清明時節(jié)</a></li>
                <li><a  title='qing'>秦時明月</a></li>
                <li><a  title='qing'>漢時關(guān)</a></li>
            </ul>
        </div>
      <flink-root></flink-root>
        <script type="text/javascript" src="runtime.0dcf16aad31edd73d8e8.js"></script><script type="text/javascript" src="es2015-polyfills.923637a8e6d276e6f6df.js" nomodule></script><script type="text/javascript" src="polyfills.bb2456cce5322b484b77.js"></script><script type="text/javascript" src="main.8128365baee3dc30e607.js"></script>
    </body>
</html>
"""
#實例化一個BeautifulSoup對象,并且將本地的源碼數(shù)據(jù)加載到該對象中。且使用html.parser進(jìn)行數(shù)據(jù)解析
soup = BeautifulSoup(html,'html.parser')
print(soup.meta)      #輸出<meta charset="utf-8">
print(soup.p)         #輸出<p>百里守約</p>
 
#find
print(soup.find('div'))  #輸出<div><p>百里守約</p></div>
#這里有多個div標(biāo)簽,根據(jù)屬性定位,因為class為關(guān)鍵字,所以這里加_
print(soup.find('div',class_="song"))   #<p>前程似錦</p>
 
#find_all
print(soup.find_all('p'))  #[<p>百里守約</p>, <p>前程似錦</p>, <p>前程似錦2</p>, <p>以夢為馬</p>]
print(soup.select('.tang'))  #將這個選擇器中的所有內(nèi)容提取
print(soup.select('.tang > ul > li > a')[1])  #返回ul中的li中的所有a標(biāo)簽中的第二個a標(biāo)簽 <a  rel="external nofollow"  title="qing">秦時明月</a>

提取標(biāo)簽中的內(nèi)容和標(biāo)簽的屬性值

#獲取標(biāo)簽中的內(nèi)容
print(soup.p.text)      #輸出百里守約
print(soup.find('div',class_="ming").text)  #以夢為馬
print(soup.find('div',class_="song"))
print(soup.select('.tang   a')[0].text)   #清明時節(jié)
 
#獲取標(biāo)簽中的屬性值,如a標(biāo)簽中的href值
print(soup.select('.tang   a')[0]['href'])  #http://123.com

案例—爬取三國演義章節(jié)及對應(yīng)的內(nèi)容

網(wǎng)站如下,網(wǎng)站數(shù)據(jù)的獲取不是通過ajax發(fā)送的請求

import requests
from bs4 import BeautifulSoup
url = 'https://so.gushiwen.org/guwen/book_46653FD803893E4F7F702BCF1F7CCE17.aspx'
headers={
    'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Mobile Safari/537.36'
}
pag_content = requests.get(url,headers,timeout=4).text
#print(pag_content)
#提取每章節(jié)內(nèi)容的鏈接
soup = BeautifulSoup(pag_content,'html.parser')
a_text = soup.select('.bookcont a')     #將其下面的所有a標(biāo)簽提取出來 
for i in a_text:
    #獲取a標(biāo)簽中的href屬性的值
    detail_url = i['href']
    #請求詳細(xì)內(nèi)容的url的內(nèi)容
    detail_content = requests.get(detail_url,headers,timeout=4).text
    soup = BeautifulSoup(detail_content,'html.parser')
    #提取class標(biāo)簽
    class_content = soup.find('div',class_='contson')
    #print(class_content)  #該標(biāo)簽中有很多p標(biāo)簽,返回整個class_content標(biāo)簽
    #print(class_content.text)   #獲取其所有的內(nèi)容
    with open('三國演義.txt','a',encoding='utf-8') as f:
        f.write(i.text+'\r')
        f.write(class_content.text+'\r')
    print(f'爬取{i.text}ok')
print('全部ok')

 

以上就是python數(shù)據(jù)解析BeautifulSoup爬取三國演義章節(jié)示例的詳細(xì)內(nèi)容,更多關(guān)于BeautifulSoup爬取三國演義章節(jié)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 樹莓派上利用python+opencv+dlib實現(xiàn)嘴唇檢測的實現(xiàn)

    樹莓派上利用python+opencv+dlib實現(xiàn)嘴唇檢測的實現(xiàn)

    本文主要介紹了樹莓派上利用python+opencv+dlib實現(xiàn)嘴唇檢測的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 教你用python實現(xiàn)一個加密的文字處理器

    教你用python實現(xiàn)一個加密的文字處理器

    生活中有時候我們需要對一些重要的文件進(jìn)行加密,下面這篇文章主要給大家介紹了關(guān)于如何用python實現(xiàn)一個加密文字處理器的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Pytorch中的數(shù)據(jù)轉(zhuǎn)換Transforms與DataLoader方式

    Pytorch中的數(shù)據(jù)轉(zhuǎn)換Transforms與DataLoader方式

    這篇文章主要介紹了Pytorch中的數(shù)據(jù)轉(zhuǎn)換Transforms與DataLoader方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Django利用elasticsearch(搜索引擎)實現(xiàn)搜索功能

    Django利用elasticsearch(搜索引擎)實現(xiàn)搜索功能

    這篇文章主要介紹了Django利用elasticsearch(搜索引擎)實現(xiàn)搜索功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python?Selenium無法打開Chrome瀏覽器處理自定義瀏覽器路徑的問題及解決方法

    Python?Selenium無法打開Chrome瀏覽器處理自定義瀏覽器路徑的問題及解決方法

    Python?Selenium控制Chrome瀏覽器的過程中,由于安裝的Chrome瀏覽器的版本找不到對應(yīng)版本的驅(qū)動chromedriver.exe文件,下載了小幾個版本號的驅(qū)動軟件都無法正常使用,下面通過本文介紹Python?Selenium無法打開Chrome瀏覽器處理自定義瀏覽器路徑的問題,需要的朋友可以參考下
    2024-08-08
  • 一文解密Python函數(shù)的實現(xiàn)原理

    一文解密Python函數(shù)的實現(xiàn)原理

    函數(shù)是任何一門編程語言都具備的基本元素,它可以將多個要執(zhí)行的操作組合起來,一個函數(shù)代表了一系列的操作。那就來看看Python函數(shù)的實現(xiàn)原理吧
    2023-03-03
  • Python Flask基礎(chǔ)教程示例代碼

    Python Flask基礎(chǔ)教程示例代碼

    這篇文章主要介紹了Python Flask基礎(chǔ)教程示例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • jupyter notebook 增加kernel教程

    jupyter notebook 增加kernel教程

    這篇文章主要介紹了jupyter notebook 增加kernel教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python使用Streamlit庫制作Web可視化頁面

    python使用Streamlit庫制作Web可視化頁面

    一談到Web頁面,可能大家首先想到就是HTML,CSS或JavaScript。 本次小F就給大家介紹一下如何用Python制作一個數(shù)據(jù)可視化網(wǎng)頁,使用到的是Streamlit庫。輕松的將一個Excel數(shù)據(jù)文件轉(zhuǎn)換為一個Web頁面,提供給所有人在線查看。
    2021-05-05
  • Python獲取時光網(wǎng)電影數(shù)據(jù)的實例代碼

    Python獲取時光網(wǎng)電影數(shù)據(jù)的實例代碼

    這篇文章主要介紹了Python獲取時光網(wǎng)電影數(shù)據(jù),基本原理是先通過requests庫,通過時光網(wǎng)自帶的電影數(shù)據(jù)API接口,獲取到指定的電影數(shù)據(jù),本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09

最新評論