bs4

作者: 郭祺迦 | 来源:发表于2018-09-27 12:54 被阅读0次

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]')#一般不用

注意:返回的是一个列表,列表里面也是对象

相关文章

网友评论

    本文标题:bs4

    本文链接:https://www.haomeiwen.com/subject/mtreoftx.html