bs4是什么?第三方库提供了一些借口,可以将你的网页内容生成一个对象,对象就会有方法或属性可以快捷的获取标签的属性或者内容。
lxml是什么?是一个文件解析器,python官方也自带了一个解析器,html.parse;一般情况下都是使用lxml
使用:
首先通过bs4将本地文件生成对象,学习对象的方法和属性
soup = BeautifulSoup(open('html文件','lxml'))
1>:通过标签进行查找
只能找到第一个标签
2>:获取属性
obj.attrs:返回一个字典,里面是所有的属性和值
obj.attrs[key]:获得指定的属性和值
obj.[key]:获得指定的属性和值,简写
3>:获取内容
obj.string
obj.text
obj.get_text()
注意:如果标签里面只有内容,这三个获取的结果是一样的,如果里面还套有标签,obj.string获取的是None,其他两个获取纯文本内容,带着换行符或者\t等
4>:find方法
soup.find('标签'):获取的是第一个标签的属性;返回的是对象
soup.find('标签',属性=XXX):根据属性找到标签,返回的也是属性
obj = soup.find('a')
obj = soup.find('a',title='su')
obj = soup.find('a',class_ = "mu")
obj = soup.find('a',id='nan')
obj = soup.find('a',class_ = re.compile(r"^gui")
注意:存在多个标签属性相同的标签,find只能找到第一个
5>:find_all方法
soup.find_all('标签'):返回一个列表,列表里面都是对象
soup.find_all('标签',属性=“属性值”):根据属性限制查找所有的同属性的标签,返回的是一个列表,列表里面都是对象
soup.find_all('标签',属性=re.compile(r'')):通过正则去匹配属性值
soup.find_all('标签',limit=num):获取前几个标签
6>:select方法
常用的选择器:
id选择器 :#
类选择器:.
标签选择器:p div a
属性选择器:input[name=XXX]
层级选择器:div > p > a;div p a(这两者是有区别的,前者:后面的节点必须是前面的直接子节点;后者:后面的节点是前面节点的子节点就行)
举例:
ret = soup.select('a')
ret = soup.select('#nan')
ret = soup.select(".mu")
ret = soup.select('.tang > a')#返回是一个空的;找的是该类选择器直接的a标签
ret = soup.select('a[class=mu]')#一般不用
注意:返回的是一个列表,列表里面也是对象
网友评论