0、初始化:
from bs4 import BeautifulSoup pageSource = driver.page_source soup = BeautifulSoup(pageSource,'html.parser')
1、标签名定位
方法1:
soup.body
方法2:
li.select('a')
2、查找
2.1、单个查找
2.1.1、按text内容查找
xmSoup.find(text=re.compile(u'来源:')) #含有XXX xmSoup.find(text=re.compile(u'项目编号:$')) #XXX结尾 xmSoup.find(text=re.compile(u'^项目编号:')) #XXX开头2.1.2、按标签名+class名查找
xmSoup.find('table',class_='form-panel-input-cls')
2.2、查找所有
2.2.1、按标签名查找
soup.find_all('input')[3]['value'] #第3个input标签的value属性
2.2.2、按标签名+class名查找
soup.find("ul",class_="po-pager").find_all('li') #ul标签下所有的li标签2.2.3、按text内容查找 同2.1.1
3、父节点
例1:
xmSoup.find(text=re.compile(u'^项目编号:')).parent #tips:有时find的结果不能直接取text,而要先到parent再取text
例2:
BudgetPoint = xmSoup.find(text=re.compile(u'预算金额:$')) BudgetRoot = BudgetPoint.parent.parent.parent.parent #tips:有时取parent时,只上一个parent,并不是直接上一级parent,而要使用4个parent才能找到直接上一级parent
4、子节点
4.1、childrent
例1:
for BudgetTemp in BudgetRoot.children: Budget = Budget + BudgetTemp.text
例2:
i = 0 for TimeTemp in TimeEndParent.children: i = i+1 if i == 4: #tips:有时候,要找的是第2个child,但是要到第4个才是要找的第2个child TimeRange = TimeTemp.text
4.2、contents tag的
.contents
属性可以将tag的子节点以列表的方式输出
例1:Budget = xmSoup.find('tbody').contents[1].contents[4].text
例2:
xmTime.next_element.contents[1].text
5、上下移 #tips:用element找不到的时候,可以用try/catch换sibling
5.1、.next_sibling 和 .previous_sibling 使用 .next_sibling
和 .previous_sibling
属性来查询兄弟节点
xmSoup.find(text=re.compile(u'采购编号:$')).next_sibling.text
5.2、.next_element 和 .previous_element .next_element
属性指向解析过程中下一个被解析的对象(字符串或tag),结果可能与 .next_sibling
相同,但通常是不一样的
try: xmID = xmSoup.find(text=re.compile(u'采购编号:$')).next_element.text except: xmID = xmSoup.find(text=re.compile(u'采购编号:$')).next_sibling.text
6、获取text
例1:
xmSoup.find(text=re.compile(u'项目名称:$')).next_element.text
例2:
ggType = soup.font.text
7、获取属性
href = tag[0]['href']
标签:parent,text,汇总,beautifulSoup,next,re,查找,xmSoup,find From: https://www.cnblogs.com/feifeidxl/p/17483105.html