bpython bs4用哪个解释器好_针对python爬虫bs4(BeautifulSoup)库的基础问题
bs4(BeautifulSoup)庫的基本使用
1.導入模塊
from bs4 import BeautifulSoup
2.解析獲取到的網頁內容
文檔被轉換成Unicode,并且HTML的實例都被轉換成Unicode編碼。
可以打印soup對象的內容,格式化輸出:print soup.prettify()
url_str = getHTMLText(url)
soup = BeautifulSoup(url_str,'html.parser')
3.基本使用方法
bs4 將復雜的HTML文檔轉換成一個復雜的樹形結構,每個節點都是python的對象。
根據標簽查找(type:bs4_obj)
head = soup.head
"""
百度一下,你就知道
"""
獲取屬性
title = head.title # 在soup中獲取第一個符合要求的標記
#
百度一下,你就知道title_str = name.string # 獲取標簽內部的文字
# 百度一下,你就知道
meta = head.meta
#
content = meta.get('content') # 獲取meta中第一個屬性
content = meta['content']
# text/html;charset=utf-8
content = meta.attrs # 獲取meta中所有屬性
# {'http-equiv': 'content-type', 'content': 'text/html;charset=utf-8'}
meta.name = 'hi' # 修改標簽的name
meta['content'] = 'hello world' # 修改標簽的屬性和內容
print(meta)
#
獲取文本內容
content = head.contents # 返回以head下各標簽為元素的列表
"""
[, , , ,
百度一下,你就知道]"""
print(content[0])
#
text = head.get_text() # 獲取head標簽內部的文字
# 百度一下,你就知道
print(type(head.title.string)) # bs4.element.NavigableString
if type(head.title.string)== bs4.element.NavigableString: # 過濾注釋內容
print('這是注釋內容')
else:
print('這不是注釋')
獲取子孫節點(tpye:generator)
descendants = soup.p.descendants
find&&find_all查找
find_all( name , attrs , recursive , text , **kwargs )
soup.find('a')
soup.find('a',title='hhh')
soup.find('a',id='',class_='')
soup.find_all('a') # 查找所有標簽
soup.find(id=True) # 查找所有包含id屬性的標簽
soup.find_all(limit=2) # 限定查找的返回數量
soup.find_all(['a','p']) # 查找所有標簽和標簽
str(soup.find_all('a',class_='title')[0]) # 注意因為class為關鍵字,所以用'class_'代替
soup.find_all(attrs = {'data-role':'goto-input'}) # '-'不能直接用作屬性名,需用字典括起來
select選擇(type:list)
soup.select('.main > ul > li > a')[0].string
總結
以上是生活随笔為你收集整理的bpython bs4用哪个解释器好_针对python爬虫bs4(BeautifulSoup)库的基础问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: antd 给input设置值_Antd
- 下一篇: oracle 将查询出的数据加1-10_