pip3 install beautifulsoup4
from bs4 import BeautifulSoup
import requests headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36 115Browser/9.0.0" } response = requests.get("https://www.xbiquge6.com/xbqgph.html",headers=headers) response.encoding = "utf-8" html = response.text print(html)
<script type="text/javascript" src="/js/m.js"></script> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>經典小說排行榜-新筆趣閣</title> <meta name="keywords" content="新筆趣閣,小說排行榜"> <meta name="description" content="新筆趣閣是廣大書友最值得收藏的小說排行榜閱讀網,網站收錄了當前最火熱的小說排行榜,免費提供高質量的小說最新章節,是廣大網絡小說愛好者必備的小說閱讀網。"> <meta http-equiv="Cache-Control" content="no-siteapp"> <meta http-equiv="Cache-Control" content="no-transform"> <link rel="stylesheet" href="/css/xbqg.css"> <script type="text/javascript" src="http://libs.baidu.com/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript" src="/js/xbqg.js"></script> <div id="wrapper"> <script>login();</script> <div class="header"> <div class="header_logo"> <a href="/">新筆趣閣</a> </div> <script>panel();</script> </div> <div class="clear"></div> <div class="nav"> <ul> <li><a href="/">首頁</a></li> <li><a href="/evercase.html">永久書架</a></li> <li><a href="/xclass/1/1.html">玄幻奇幻</a></li> <li><a href="/xclass/2/1.html">武俠仙俠</a></li> <li><a href="/xclass/3/1.html">都市言情</a></li> <li><a href="/xclass/4/1.html">歷史軍事</a></li> <li><a href="/xclass/5/1.html">科幻靈異</a></li> <li><a href="/xclass/6/1.html">網遊競技</a></li> <li><a href="/xclass/7/1.html">女頻頻道</a></li> <li><a href="/quanben/">完本小說</a></li> <li><a href="/xbqgph.html">排行榜單</a></li> <li><a href="/xbqgcase.html">臨時書架</a></li> </ul> </div> <div id="main"> <div class="novelslist2"> <h2>小說排行榜列表</h2> <ul> <li><span class="s1"><b>做品分類</b></span><span class="s2"><b>做品名稱</b></span><span class="s3"><b>最新章節</b></span><span class="s4"><b>做者</b></span><span class="s5"><b>更新時間</b></span><span class="s6"><b>狀態</b></span></li> <li><span class="s1">[<a href="/xclass/3/1.html">都市言情</a>]</span><span class="s2"><a href="/78_78760/" target="_blank">我本港島電影人</a></span><span class="s3"><a href="/78_78760/1203299.html" target="_blank">今天有更</a></span><span class="s4">再來一盤菇涼</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/1/1.html">玄幻奇幻</a>]</span><span class="s2"><a href="/90_90002/" target="_blank">艾澤拉斯新秩序</a></span><span class="s3"><a href="/90_90002/350275.html" target="_blank">第一百三十六章 卡拉讚的收穫</a></span><span class="s4">想靜靜的頓河</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/3/1.html">都市言情</a>]</span><span class="s2"><a href="/90_90842/" target="_blank">超級狂婿</a></span><span class="s3"><a href="/90_90842/350271.html" target="_blank">第654章:他未入流</a></span><span class="s4">我本幸運</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/3/1.html">都市言情</a>]</span><span class="s2"><a href="/90_90305/" target="_blank">我在都市修個仙</a></span><span class="s3"><a href="/90_90305/339101.html" target="_blank">完本感言</a></span><span class="s4">一劍蕩清風</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/3/1.html">都市言情</a>]</span><span class="s2"><a href="/75_75283/" target="_blank">都市超級醫聖</a></span><span class="s3"><a href="/75_75283/4165727.html" target="_blank">第2613章 戰後處理</a></span><span class="s4">斷橋殘雪</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/3/1.html">都市言情</a>]</span><span class="s2"><a href="/90_90235/" target="_blank">祖傳土豪系統</a></span><span class="s3"><a href="/90_90235/350262.html" target="_blank">第二百零五章 我能試試嗎</a></span><span class="s4">第九傾城</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/3/1.html">都市言情</a>]</span><span class="s2"><a href="/83_83534/" target="_blank">都市紅粉圖鑑</a></span><span class="s3"><a href="/83_83534/838632.html" target="_blank">第1510章 我,纔是坐館龍頭!</a></span><span class="s4">秋江獨釣</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/2/1.html">武俠仙俠</a>]</span><span class="s2"><a href="/89_89635/" target="_blank">勝天傳奇</a></span><span class="s3"><a href="/89_89635/998995.html" target="_blank">第三百八十章 遊歷天宮</a></span><span class="s4">騎牛者</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/3/1.html">都市言情</a>]</span><span class="s2"><a href="/88_88085/" target="_blank">總裁爸比從天降</a></span><span class="s3"><a href="/88_88085/998993.html" target="_blank">第1748章 奈何本身是婆婆</a></span><span class="s4">一碟茴香豆</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/1/1.html">玄幻奇幻</a>]</span><span class="s2"><a href="/89_89996/" target="_blank">太古魔帝</a></span><span class="s3"><a href="/89_89996/998988.html" target="_blank">第一千三百二十四章 魂帝</a></span><span class="s4">草根</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> </ul> </div> <div class="clear"></div> </div> </div> <div class="footer"> <div class="footer_cont"><script>footer();dl();</script></div> </div>
經常使用四種解釋器 | 解釋器 | 標識 | 特色|
|--|--|--| | Python標準庫 | html.parser | Python內置,執行速度中 |
| lxml的HTML解釋器 | lxml | 速度快 |
| lxml的XML解釋器 | xml | 惟一支持XML解析 |
| html5lib | html5lib | 容錯性最好,以瀏覽器方式解析 |javascript
soup = BeautifulSoup(html, 'html.parser')
還能夠解析本地html文件css
soup1 = BeautifulSoup(open('index.html'))
略html
title = soup.head.title print(type(title)) print(title) 結果是 <class 'bs4.element.tag'> <title>經典小說排行榜-新筆趣閣</title>
對於名稱惟一的節點,能夠省略層級html5
title = soup.title print(type(title)) print(title) 結果一樣是 <class 'bs4.element.tag'> <title>經典小說排行榜-新筆趣閣</title>
名稱不惟一的節點,直接獲取只會獲取第一個匹配的節點java
li = soup.li print(li) 結果是 <li><a href="/">首頁</a></li>
find_all( name , attrs , recursive , text , **kwargs )
name :查找全部名字爲 name 的tag,字符串對象會被自動忽略掉; attrs:根據屬性查詢,使用字典類型; text :能夠搜搜文檔中的字符串內容.與 name 參數的可選值同樣, text 參數接受 字符串 , 正則表達式 , 列表, True ; recursive:調用tag的 find_all() 方法時,Beautiful Soup會檢索當前tag的全部子孫節點,若是隻想搜索tag的直接子節點,可使用參數 recursive=False ; limit:find_all() 方法返回所有的搜索結構,若是文檔樹很大那麼搜索會很慢.若是咱們不須要所有結果,可使用 limit 參數限制返回結果的數量.效果與SQL中的limit關鍵字相似,當搜索到的結果數量達到 limit 的限制時,就中止搜索返回結果; class_ :經過 class_ 參數搜索有指定CSS類名的tag,class_ 參數一樣接受不一樣類型的 過濾器 ,字符串,正則表達式,方法或 True。
lis = soup.find_all(name="li") for item in lis: print(item) 結果是 <li><a href="/">首頁</a></li> <li><a href="/evercase.html">永久書架</a></li> <li><a href="/xclass/1/1.html">玄幻奇幻</a></li> <li><a href="/xclass/2/1.html">武俠仙俠</a></li> <li><a href="/xclass/3/1.html">都市言情</a></li> <li><a href="/xclass/4/1.html">歷史軍事</a></li> <li><a href="/xclass/5/1.html">科幻靈異</a></li> <li><a href="/xclass/6/1.html">網遊競技</a></li> <li><a href="/xclass/7/1.html">女頻頻道</a></li> <li><a href="/quanben/">完本小說</a></li> <li><a href="/xbqgph.html">排行榜單</a></li> <li><a href="/xbqgcase.html">臨時書架</a></li> <li><span class="s1"><b>做品分類</b></span><span class="s2"><b>做品名稱</b></span><span class="s3"><b>最新章節</b></span><span class="s4"><b>做者</b></span><span class="s5"><b>更新時間</b></span><span class="s6"><b>狀態</b></span></li> <li><span class="s1">[<a href="/xclass/3/1.html">都市言情</a>]</span><span class="s2"><a href="/90_90590/" target="_blank">我能舉報萬物</a></span><span class="s3"><a href="/90_90590/361969.html" target="_blank">第九十六章 巡撫視察【第三更】</a></span><span class="s4">必火</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/5/1.html">科幻靈異</a>]</span><span class="s2"><a href="/81_81279/" target="_blank">女戰神的黑包羣</a></span><span class="s3"><a href="/81_81279/1140238.html" target="_blank">第3046章 惡毒女配,在線提刀45</a></span><span class="s4">二謙</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/1/1.html">玄幻奇幻</a>]</span><span class="s2"><a href="/89_89699/" target="_blank">花崗岩之怒</a></span><span class="s3"><a href="/89_89699/999707.html" target="_blank">第一百五十二章 意外到來的斷劍</a></span><span class="s4">咱的小刀</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/6/1.html">網遊競技</a>]</span><span class="s2"><a href="/77_77363/" target="_blank">超神機械師</a></span><span class="s3"><a href="/77_77363/1338182.html" target="_blank">1090 韭菜的自覺</a></span><span class="s4">齊佩甲</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/2/1.html">武俠仙俠</a>]</span><span class="s2"><a href="/59_59644/" target="_blank">無量真途</a></span><span class="s3"><a href="/59_59644/3199234.html" target="_blank">第六百三十二章 忽然出現的神智</a></span><span class="s4">燕十千</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/5/1.html">科幻靈異</a>]</span><span class="s2"><a href="/88_88061/" target="_blank">個人細胞監獄</a></span><span class="s3"><a href="/88_88061/999706.html" target="_blank">第四百五十九章 白霧</a></span><span class="s4">穿黃衣的阿肥</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/2/1.html">武俠仙俠</a>]</span><span class="s2"><a href="/88_88375/" target="_blank">前任無雙</a></span><span class="s3"><a href="/88_88375/999705.html" target="_blank">第三百章 事急速辦</a></span><span class="s4">躍千愁</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/2/1.html">武俠仙俠</a>]</span><span class="s2"><a href="/90_90719/" target="_blank">元陽道君</a></span><span class="s3"><a href="/90_90719/361968.html" target="_blank">第四十章 洞開</a></span><span class="s4">劍扼虛空</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/4/1.html">歷史軍事</a>]</span><span class="s2"><a href="/88_88151/" target="_blank">逆成長巨星</a></span><span class="s3"><a href="/88_88151/999704.html" target="_blank">655:不是辦法的辦法</a></span><span class="s4">葛洛夫街兄弟</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li> <li><span class="s1">[<a href="/xclass/4/1.html">歷史軍事</a>]</span><span class="s2"><a href="/89_89303/" target="_blank">承包大明</a></span><span class="s3"><a href="/89_89303/999703.html" target="_blank">第一百九十三章 真會玩</a></span><span class="s4">南希北慶</span><span class="s5">2019-11-16</span><span class="s6">連載中</span></li>
屬性和值以字典形式傳入python
lis = soup.find_all(attrs={"class":"s2"}) for item in lis: print(item) 結果是 <span class="s2"><b>做品名稱</b></span> <span class="s2"><a href="/90_90590/" target="_blank">我能舉報萬物</a></span> <span class="s2"><a href="/81_81279/" target="_blank">女戰神的黑包羣</a></span> <span class="s2"><a href="/89_89699/" target="_blank">花崗岩之怒</a></span> <span class="s2"><a href="/77_77363/" target="_blank">超神機械師</a></span> <span class="s2"><a href="/59_59644/" target="_blank">無量真途</a></span> <span class="s2"><a href="/88_88061/" target="_blank">個人細胞監獄</a></span> <span class="s2"><a href="/88_88375/" target="_blank">前任無雙</a></span> <span class="s2"><a href="/90_90719/" target="_blank">元陽道君</a></span> <span class="s2"><a href="/88_88151/" target="_blank">逆成長巨星</a></span> <span class="s2"><a href="/89_89303/" target="_blank">承包大明</a></span>
find_all 方法會搜索當前標籤的全部子孫節點,若是隻想搜索直接子節點,可使用參數 recursive=Falsejquery
以列表形式返回全部子節點,要注意,列表裏面還會摻雜 '\n'程序員
ul = soup.ul print(ul) print(ul.contents) 結果是 <ul> <li><a href="/">首頁</a></li> <li><a href="/evercase.html">永久書架</a></li> <li><a href="/xclass/1/1.html">玄幻奇幻</a></li> <li><a href="/xclass/2/1.html">武俠仙俠</a></li> <li><a href="/xclass/3/1.html">都市言情</a></li> <li><a href="/xclass/4/1.html">歷史軍事</a></li> <li><a href="/xclass/5/1.html">科幻靈異</a></li> <li><a href="/xclass/6/1.html">網遊競技</a></li> <li><a href="/xclass/7/1.html">女頻頻道</a></li> <li><a href="/quanben/">完本小說</a></li> <li><a href="/xbqgph.html">排行榜單</a></li> <li><a href="/xbqgcase.html">臨時書架</a></li> </ul> ['\n', <li><a href="/">首頁</a></li>, '\n', <li><a href="/evercase.html">永久書架</a></li>, '\n', <li><a href="/xclass/1/1.html">玄幻奇幻</a></li>, '\n', <li><a href="/xclass/2/1.html">武俠仙俠</a></li>, '\n', <li><a href="/xclass/3/1.html">都市言情</a></li>, '\n', <li><a href="/xclass/4/1.html">歷史軍事</a></li>, '\n', <li><a href="/xclass/5/1.html">科幻靈異</a></li>, '\n', <li><a href="/xclass/6/1.html">網遊競技</a></li>, '\n', <li><a href="/xclass/7/1.html">女頻頻道</a></li>, '\n', <li><a href="/quanben/">完本小說</a></li>, '\n', <li><a href="/xbqgph.html">排行榜單</a></li>, '\n', <li><a href="/xbqgcase.html">臨時書架</a></li>, '\n']
返回一個list生成器對象正則表達式
ul = soup.ul print(ul.children) print(list(ul.children)) 結果是 ['\n', <li><a href="/">首頁</a></li>, '\n', <li><a href="/evercase.html">永久書架</a></li>, '\n', <li><a href="/xclass/1/1.html">玄幻奇幻</a></li>, '\n', <li><a href="/xclass/2/1.html">武俠仙俠</a></li>, '\n', <li><a href="/xclass/3/1.html">都市言情</a></li>, '\n', <li><a href="/xclass/4/1.html">歷史軍事</a></li>, '\n', <li><a href="/xclass/5/1.html">科幻靈異</a></li>, '\n', <li><a href="/xclass/6/1.html">網遊競技</a></li>, '\n', <li><a href="/xclass/7/1.html">女頻頻道</a></li>, '\n', <li><a href="/quanben/">完本小說</a></li>, '\n', <li><a href="/xbqgph.html">排行榜單</a></li>, '\n', <li><a href="/xbqgcase.html">臨時書架</a></li>, '\n']
ul = soup.ul for item in ul.descendants: print(item) 結果是(中間不少'\n'空行我刪掉了) <li><a href="/">首頁</a></li> <a href="/">首頁</a> 首頁 <li><a href="/evercase.html">永久書架</a></li> <a href="/evercase.html">永久書架</a> 永久書架 <li><a href="/xclass/1/1.html">玄幻奇幻</a></li> <a href="/xclass/1/1.html">玄幻奇幻</a> 玄幻奇幻 <li><a href="/xclass/2/1.html">武俠仙俠</a></li> <a href="/xclass/2/1.html">武俠仙俠</a> 武俠仙俠 <li><a href="/xclass/3/1.html">都市言情</a></li> <a href="/xclass/3/1.html">都市言情</a> 都市言情 <li><a href="/xclass/4/1.html">歷史軍事</a></li> <a href="/xclass/4/1.html">歷史軍事</a> 歷史軍事 <li><a href="/xclass/5/1.html">科幻靈異</a></li> <a href="/xclass/5/1.html">科幻靈異</a> 科幻靈異 <li><a href="/xclass/6/1.html">網遊競技</a></li> <a href="/xclass/6/1.html">網遊競技</a> 網遊競技 <li><a href="/xclass/7/1.html">女頻頻道</a></li> <a href="/xclass/7/1.html">女頻頻道</a> 女頻頻道 <li><a href="/quanben/">完本小說</a></li> <a href="/quanben/">完本小說</a> 完本小說 <li><a href="/xbqgph.html">排行榜單</a></li> <a href="/xbqgph.html">排行榜單</a> 排行榜單 <li><a href="/xbqgcase.html">臨時書架</a></li> <a href="/xbqgcase.html">臨時書架</a> 臨時書架
a = soup.li.a print(a) p = a.parent print(p) 結果是 <a href="/">首頁</a> <li><a href="/">首頁</a></li>
感受沒什麼用編程
title = soup.title print(title.name) 結果是 title
a = soup.li.a print(a) print(a.attrs) # 獲取全部屬性,返回字典形式 print(a['href'])# 獲取a節點的href屬性值 結果是 <a href="/">首頁</a> {'href': '/'} /
a = soup.li.a print(type(a.string)) # 節點內文本的類型 print(a.string) # 獲取節點內的文本內容 print(a.get_text()) # 也是獲取節點內的文本內容 結果是 <class 'bs4.element.navigablestring'> 首頁
注意!!!若是節點內文本是註釋,則用string取出文本時會自動去除註釋標記 註釋的類型:<class 'bs4.element.comment'>,能夠經過類型判斷
for string in soup.stripped_strings: # 去除多餘空白內容 print(repr(string))
> 想進一步瞭解編程開發相關知識,與我一同成長進步,請關注個人公衆號「松果倉庫」,共同分享宅&程序員的各種資源,謝謝!!!</class></class></class></class>