詳解gantt甘特圖可拖拽、編輯(vue、react都可用 highcharts)
阿新 • • 發佈:2021-11-29
css選擇器組成
規則由兩部分組成:選擇器以及一條或多條宣告。
主要講選擇器的相關用法(這在爬蟲時候足夠用了)
這個講解主要是用在bs4中的css選擇器;至於pyquery可以看這個
元素選擇器
選取html中的元素,如p,div;
.select('p')
例項
soup = BeautifulSoup(html_sourse,'lxml')
element = soup.select('p')
print(element,type(element)) # <class 'bs4.element.ResultSet'>
類選擇器
.class;div.class
例項
# <class 'bs4.element.ResultSet'> lei = soup.select('.ir___QwEG') # 這樣所選的話並不會把含有該類的標籤打印出來,就是不列印div標籤,下方列印 print('選取所有該類的元素',lei,type(lei)) div_lei = soup.select('div.ir___QwEG') # 中間不用空行 print('選取所有該類的元素',div_lei,type(div_lei)) # <class 'bs4.element.ResultSet'>
ID選擇器
與類選擇器不同之處在於ID選擇器是以"#"開頭
select_id = soup.select('#backtop')
select_a_id = soup.select('a#backtop')
print(select_id,type(select_id)) # <class 'bs4.element.ResultSet'>
print(select_a_id,type(select_a_id)) # <class 'bs4.element.ResultSet'>
屬性選擇器
如果希望選擇有某個屬性的元素,則可以使用屬性選擇器,不僅侷限於id和class屬性。
如:target屬性
# 報錯,貌似bs4中的select無法使用css3新增的屬性選擇器
# TypeError: select() missing 1 required positional argument: 'selector'
select_attr = soup.select(target="_blank") # 選擇所有含有target屬性的元素
# select_attr_val = soup.select('target="_blank"') # 選擇所有含有target="_blank"的元素
既然無法用,那就講解下,屬性選擇器符號的運用(target是html標籤中的屬性,同理也可為其他屬性)
[target~="_blank"]選擇屬性target包含 _blank的元素
[target^="_blank"]選擇屬性target以 _blank開頭的元素
a[target] 選擇所有含有target屬性的a的元素
後代選擇器;採用空格
element_houdai = soup.select('p input')# 選擇所有p元素下的所有input元素
print(element_houdai,type(element_houdai)) # <class 'bs4.element.ResultSet'>
子元素選擇器;採用大於號 >
element_son = soup.select('p>input') # 選擇所有p元素下的所有input子元素
print(element_son,type(element_son)) # <class 'bs4.element.ResultSet'>
相鄰兄弟選擇器;採用加號 +
element_brother = soup.select('p+a') # 選擇緊跟在p元素後面的所有兄弟a元素
print(element_brother,type(element_brother)) # <class 'bs4.element.ResultSet'>
按效果實現來說後代選擇器和子元素選擇器很像
bs4一般一開始的使用
bs4建立<class 'bs4.BeautifulSoup'>
物件的方法
from bs4 import BeautifulSoup
f = open('test.html','r',encoding='utf-8')
html_sourse = f.read()
f.close()
# 直接通過字串進行建立
soup = BeautifulSoup(html_sourse,'lxml')
# 通過開啟檔案來建立
soup1 = BeautifulSoup(open('test.html',encoding='utf-8'))
print(soup1.prettify())
print(type(soup),type(soup1)) # <class 'bs4.BeautifulSoup'> <class 'bs4.BeautifulSoup'>
努力拼搏吧,不要害怕,不要去規劃,不要迷茫。但你一定要在路上一直的走下去,儘管可能停滯不前,但也要走。