BeautifulSoup之find(),find_all(),select()

BeautifulSoup介绍

BeautifulSoup是python的一个库,算是python爬虫的一大利器。它的功能就是解析网页数据。

Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
摘自https://cuiqingcai.com/1319.html

BeautifulSoup3目前停止开发,我们如果要使用推荐下载使用bs4(BeautifulSoup 4.3.2)。

find()方法

'''
find(name, attrs, recursive, string, **kwargs)
@PARAMS:
	name: 查找的value,可以是string,list,function,真值或者re正则表达式
	attrs: 查找的value的一些属性,class等。
	recursive: 是否递归查找子类,bool类型
	string: 使用此参数,查找结果为string类型;如果和name搭配,就是查找符合name的包含string的结果。
	**kwargs: 其他一些参数
'''

# soup.find(name)
soup.find("title")  # The Dormouse's story
def has_class_but_no_id(tag):
    return tag.has_attr('class') and not tag.has_attr('id')
soup.find(has_class_but_no_id)  # 

The Dormouse's story

soup.find(re.compile("t")).name # html soup.find(["a", "b"]) # The Dormouse's story soup.find(True) # html # soup.find(name, attrs) soup.find("a", class_="sister") # Elsie soup.find("a", attrs={"class": "sister"}) # soup(string='string') soup.find(string="Elsie") # u'Elsie' # soup(name, string='string') soup.find("a", string="Elsie") # Elsie

find_all()方法

'''
find_all(name, attrs, recursive, string, limit, **kwargs)
@PARAMS:
	name: 查找的value,可以是string,list,function,真值或者re正则表达式
	attrs: 查找的value的一些属性,class等。
	recursive: 是否递归查找子类,bool类型
	string: 使用此参数,查找结果为string类型;如果和name搭配,就是查找符合name的包含string的结果。
	limit: 查找的value的个数
	**kwargs: 其他一些参数
'''
find_all("a", attrs={"class": "sister"}, limit=2, string=["Elsie", "Lacie"], recursive=True)
# [Elsie,
#  Lacie]

select()方法

'''
BeautifulSoup支持最常用的CSS选择器. 将字符串str传递到标签对象或者BeautifulSoup对象自身的select()方法中.
'''
soup.select("p.strikeout.body")
# [

]

简单比较

# find_all()与find()方法
p1=soup.find_all('p',class_='info')
txt=p1[0].find('span').string
# select()方法
p2=soup.select('p.info')
txt=p2[0].select('span')[0].get_text()

一般来说,find_all()和find()方法较为普遍;select()方法比较简洁。

你可能感兴趣的:(爬虫相关,beautifulsoup,find,find_all,select)