最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

  • bs4(python中獨(dú)有的)
  • xpath(推薦,通用型強(qiáng))
  • 正則

數(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)行提?。ń馕觯?/p>

Beautiful Soup

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

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

實(shí)例化一個(gè)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用法

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

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

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

soup.find(標(biāo)簽名) 返回第一次出現(xiàn)的這個(gè)標(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'>清明時(shí)節(jié)</a></li>
                <li><a  title='qing'>秦時(shí)明月</a></li>
                <li><a  title='qing'>漢時(shí)關(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>
"""
#實(shí)例化一個(gè)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>
#這里有多個(gè)div標(biāo)簽,根據(jù)屬性定位,因?yàn)閏lass為關(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'))  #將這個(gè)選擇器中的所有內(nèi)容提取
print(soup.select('.tang > ul > li > a')[1])  #返回ul中的li中的所有a標(biāo)簽中的第二個(gè)a標(biāo)簽 <a  rel="external nofollow"  title="qing">秦時(shí)明月</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)   #清明時(shí)節(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)簽,返回整個(gè)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)文章

  • 深入理解Django的自定義過濾器

    深入理解Django的自定義過濾器

    這篇文章主要給大家介紹了關(guān)于Django自定義過濾器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • 詳談Python 窗體(tkinter)表格數(shù)據(jù)(Treeview)

    詳談Python 窗體(tkinter)表格數(shù)據(jù)(Treeview)

    今天小編就為大家分享一篇詳談Python 窗體(tkinter)表格數(shù)據(jù)(Treeview),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python+Sklearn實(shí)現(xiàn)異常檢測

    Python+Sklearn實(shí)現(xiàn)異常檢測

    這篇文章主要為大家詳細(xì)介紹了Python如何利用Sklearn實(shí)現(xiàn)異常檢測,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定的幫助,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-12-12
  • 使用Python實(shí)現(xiàn)有趣的鎖屏小工具

    使用Python實(shí)現(xiàn)有趣的鎖屏小工具

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)有趣的鎖屏小工具,這樣再也不用擔(dān)心因?yàn)闆]有鎖屏被扣工資啦,打工人快跟隨小編一起學(xué)習(xí)一下吧
    2023-12-12
  • Python使用jsonpath_ng的方法

    Python使用jsonpath_ng的方法

    json path_ng 是 Python 中一款解析和操作 JSON 數(shù)據(jù)的工具,它可以通過 JSONPath 語法來對 JSON 數(shù)據(jù)進(jìn)行定位和提取,其用法類似于 XPath 語法對 XML 數(shù)據(jù)進(jìn)行定位,這篇文章主要介紹了Python使用jsonpath_ng的方法,需要的朋友可以參考下
    2023-12-12
  • python實(shí)現(xiàn)決策樹

    python實(shí)現(xiàn)決策樹

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)決策樹的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Python基本數(shù)據(jù)結(jié)構(gòu)之字典類型dict用法分析

    Python基本數(shù)據(jù)結(jié)構(gòu)之字典類型dict用法分析

    這篇文章主要介紹了Python基本數(shù)據(jù)結(jié)構(gòu)之字典類型dict用法,結(jié)合實(shí)例形式分析了Python字典類型dict概念、原理、定義及基本使用技巧,需要的朋友可以參考下
    2019-06-06
  • Python處理Excel的14個(gè)常用操作總結(jié)

    Python處理Excel的14個(gè)常用操作總結(jié)

    在數(shù)據(jù)處理和分析的領(lǐng)域中,Excel是一種被廣泛使用的工具,然而,通過Python處理Excel,能夠更好地實(shí)現(xiàn)自動化和批量處理,本文為大家整理了14個(gè)Python處理Excel的常用操作,希望對大家有所幫助
    2023-12-12
  • python深度學(xué)習(xí)tensorflow安裝調(diào)試教程

    python深度學(xué)習(xí)tensorflow安裝調(diào)試教程

    這篇文章主要為大家介紹了python深度學(xué)習(xí)tensorflow安裝調(diào)試教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python文件操作JSON CSV TSV Excel和Pickle文件序列化

    Python文件操作JSON CSV TSV Excel和Pickle文件序列化

    這篇文章主要為大家介紹了Python文件操作之JSON、CSV、TSV、Excel和Pickle文件序列化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11

最新評論

中阳县| 富顺县| 眉山市| 东光县| 四平市| 桃园县| 余江县| 连南| 长丰县| 庆安县| 乌兰县| 宁国市| 濉溪县| 社旗县| 白河县| 桐庐县| 类乌齐县| 崇文区| 五台县| 临泽县| 新邵县| 安图县| 上饶市| 柳河县| 报价| 尼勒克县| 阿尔山市| 钟祥市| 通许县| 潢川县| 交城县| 正蓝旗| 嘉荫县| 健康| 平武县| 绿春县| 云南省| 临夏市| 柳河县| 开封市| 共和县|