BeautifulSoup详解
文章目錄
- 1.下載安裝
- 2.導(dǎo)入
- 3.裝載HTML文檔
- 4.將文檔數(shù)轉(zhuǎn)換成字符串格式
- 5.BeautifulSoup查找文檔元素
- 6.BeautifulSoup遍歷文檔樹
- 7.BeautifulSoup使用css語法查找元素
- 9.字符編碼問題
- 8.實(shí)例:爬取中國(guó)天氣網(wǎng)數(shù)據(jù)蘭州7天的
1.下載安裝
pip install bs42.導(dǎo)入
from bs4 import BeautifulSoup as bs3.裝載HTML文檔
soup = bs(doc, 'lxml') #doc是一個(gè)HTML文檔字符串,可以自動(dòng)補(bǔ)全 lxml是指定該文檔的解析方式 python自帶的解析器是parser4.將文檔數(shù)轉(zhuǎn)換成字符串格式
soup.prettify()5.BeautifulSoup查找文檔元素
(1)find() 查找一個(gè)元素節(jié)點(diǎn),返回第一個(gè)滿足要求的節(jié)點(diǎn)信息
(2)find_all()
self表明它是一個(gè)類成員函數(shù);name是要查找的標(biāo)簽元素名稱;attrs表示元素的屬性,一個(gè)字典;recursive是默認(rèn)True,全范圍查找該節(jié)點(diǎn)下面的子樹;…
(3)返回的都是列表,每個(gè)元素都是一個(gè)bs4.element.Tag對(duì)象
(4)獲取包含的文本值:tag.text
6.BeautifulSoup遍歷文檔樹
tag.parent:獲取tag節(jié)點(diǎn)的父節(jié)點(diǎn) tag.children:獲取tag節(jié)點(diǎn)的所有子節(jié)點(diǎn),包括element,text等類型的子節(jié)點(diǎn) tag.desendants:獲取tag節(jié)點(diǎn)的所有子孫節(jié)點(diǎn),包括element,text等類型的子節(jié)點(diǎn) tag.next_sibling:tag臨近的下一個(gè)兄弟節(jié)點(diǎn) tag.previous_sibling:tag臨近的前一個(gè)兄弟節(jié)點(diǎn)7.BeautifulSoup使用css語法查找元素
(1)tag.select(css):tag是HTML文檔中的一個(gè)元素節(jié)點(diǎn)
css一般結(jié)構(gòu):[tagName][attName][=value] 全是可選的,表示元素名稱,元素屬性,元素屬性的值
(2)屬性的語法:
[attName]選取帶有指定屬性的每個(gè)元素
[attName=value]選取帶有指定屬性和值的每個(gè)元素
[aattName^=value]:匹配屬性值以value開頭的每個(gè)元素
[attName$=value]:匹配屬性值以value結(jié)尾的每個(gè)元素
[attName*=value]:匹配屬性值包含value的每個(gè)元素
(3)遍歷:
css有多個(gè)節(jié)點(diǎn)時(shí),空格分開:
soup.select("div p"):查找div節(jié)點(diǎn)下所有子孫p節(jié)點(diǎn)的信息
soup.select("div > p"):查找div節(jié)點(diǎn)下所有直接子節(jié)點(diǎn)p的信息
soup.select("div ~ p"):查找div后面所有同級(jí)別兄弟節(jié)點(diǎn)p的信息
soup.select("div + p"):查找前一個(gè)節(jié)點(diǎn)后面所有同級(jí)別兄弟節(jié)點(diǎn)的信息
9.字符編碼問題
import urllib.requestfrom bs4 import BeautifulSoup as bsfrom bs4 import UnicodeDammitdata = urllib.request.urlopen(url)data=data.read()dammit = UnicodeDammit(data,['gbk','utf-8'])data = dammit.unicode_markupsoup = bs(data,'lxml')tags = soup.select("div[class='屬性值'] span.....")for tag in tags:print(tag)8.實(shí)例:爬取中國(guó)天氣網(wǎng)數(shù)據(jù)蘭州7天的
總結(jié)
以上是生活随笔為你收集整理的BeautifulSoup详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SUMIFS函数 、MATCH及INDE
- 下一篇: dd命令测试U盘读写速度