BeautifulSoup是Python包裏最有名的HTML parser分解工具之一。簡單易用
pip install beautifulsoup4
注意大小寫,並且不要安裝BeautifulSoup
,由於BeautifulSoup
表明3.0,已經中止更新。html
參考我以前的文章:BeautifulSoup :一些經常使用功能的使用和測試html5
# 建立實例 soup = BeautifulSoup(html, 'html5lib')
根據不一樣的網頁,選擇器的使用會很不一樣:shell
select()
就足夠了-
等特殊字符,那麼就只能使用find()
選擇器了。# 最佳選擇器: CSS選擇器(返回tag list) results = soup.select('div[class*=hello_world] ~ div') for tag in results: print(tag.string) #print the tag's html string # print(tag.get_text()) #print its inner text #單TAG精確選擇器:返回單個tag. tag = soup.find('div', attrs={'class': 'detail-block'}) print(tag.get_text()) # 多Tag精確選擇器: 返回的是text,不是tag results = soup.find_all('div', attrs={'class': 'detail-block'}) # 多class選擇器(標籤含有多個Class),重點是"class*=" results = soup.select('div[class*=hello_world] ~ div')
tag = soup.find('a') # 只獲取標籤的文本內容 text = tag.get_text() # 獲取標籤的所有內容(如<a href='sdfj'> asdfa</a>) s = tag.string # 獲取標籤的屬性 link = tag['href']
tag = soup.find('a', attrs={'class': 'detail-block'}) #修改屬性 tag['href'] = 'https://google.com' # 修改內容 <tag>..</tag>中間的內容 tag.string = 'New Content' # 刪除屬性 del tag['class']
在咱們使用選擇器搜索各種tag標籤時,BeautifulSoup會根據使用的函數而返回不一樣類型的變量。而不一樣的變量的使用方法也須要注意。工具
Tag類型(<class 'bs4.element.Tag'>
):測試
tag.string
tag.get_text()
bs4.element.NavigableString
):<class 'bs4.element.Comment'>
):參考:使用BeautifulSoup改變網頁內容google
# 修改標籤內容 tag = soup.find('title') tag.string = 'New Title'