beautifulsoup选择器:
soup.title
soup.title.name
soup.body
soup.p['name']获取标签属性
soup.p.attrs['name']
soup.p.string 获取标签内的内容
soup.p.children 子节点获取
soup.p.parent 父节点
soup.find_all("p")
soup.find_all("ul")
soup.find_all(attrs={'name': 'elements'})
soup.find_all(class_='element')
soup.find_all(text='Foo')
find_parents() find_parent()
find_parents()返回所有祖先节点,find_parent()返回直接父节点。
find_next_siblings() find_next_sibling()
find_next_siblings()返回后面所有兄弟节点,find_next_sibling()返回后面第一个兄弟节点。
find_previous_siblings() find_previous_sibling()
find_previous_siblings()返回前面所有兄弟节点,find_previous_sibling()返回前面第一个兄弟节点。
find_all_next() find_next()
find_all_next()返回节点后所有符合条件的节点, find_next()返回第一个符合条件的节点
find_all_previous() 和 find_previous()
find_all_previous()返回节点后所有符合条件的节点, find_previous()返回第一个符合条件的节点
print(soup.select('.panel .panel-heading'))#选择class的类型
print(soup.select('ul li'))#直接选择标签
print(soup.select('#list-2 .element'))#选择id的类型
print(type(soup.select('ul')[0]))
print(ul['id'])#这两种方法都能获取标签的属性(id或其他)
print(ul.attrs['id']
xpath选择器:
page=soup.xpath('/html/head/base/@href') #从根节点开始选取
page=soup.xpath('/html/head//@href') #也可以这样选择结果是相同的
#//表示从当前节点开始选择,不必考虑位置。
#选取title下所有文本
page=soup.xpath("//title/text()")
#选取HTML下所有a节点
page=soup.xpath('//a')
#选取标签下属性为image.html的scr属性
page=soup.xpath("//a[@href='image1.html']/img/@src")
#选取a标签下第三个href属性
page=soup.xpath("//a[contains(@href, '3')]/@href")
#body最后一个a标签href属性
page=soup.xpath("//body//a[last()]/img/@src")
page=soup.xpath('//a[@class="active"][@id="value"]/img/@src') #多个属性定位
re正则选择器: