from bs4 import BeautifulSoup
import lxml
html ='<div class="left"><em class="story"><!--这是一个注释--></em></div>
<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>'
soup = BeautifulSoup(html,'lxml')
# print(soup.prettify()) # 格式化
# beautifulsoup四大对象
print(type(soup.a.string)) #内容 类型为:'bs4.element.NavigableString'
print(type(soup.a)) # bs4.element.Tag
print(type(soup.em.string)) # 注释内容 类型为:bs4.element.Comment
print(type(soup)) # bs4.BeautifulSoup
# 多种获取html内容的方式
print(soup.find_all('a'))
print(soup.find_all(id="link2"))
print(soup.find_all('a',{'class':"sister"})) # 字典形式
print(soup.find_all('a',{'href':'http://example.com/lacie'}))
print(soup.find_all(href='http://example.com/lacie'))
print('----------------------------------select 方法返回的都是列表--------------------')
print(soup.select('a'))
print(soup.select("#link2")) # 类名前加.,id名前加#
print(soup.select('.sister'))
print(soup.select('a' '#link2')) # 用空格隔开
print(soup.select('a[class="sister"]'))
# 直接子标签查找,则使用 > 分隔
print(soup.select("head > title"))
print('----------------------------------select 方法返回的都是列表--------------------')
print(type(soup.select('a'))) # <class 'list'>
print(soup.select('a')[0].get_text()) # Lacie3
print(soup.select("div > em")[0].string) # 取注释用string
print(soup.select("a")[0].get("href")) # str类型
print(soup.select("a")[0].get("class")) # 注意取class结果是list类型,取id是str类型
# select 方法返回的结果都是列表形式,可以遍历形式输出,然后用 get_text() 方法来获取它的内容。
for result in soup.select('#link2'):
print(result.get_text())