BeautifulSoup基础应用

BeautifulSoup是用于HTML的解析的库,其实也比较容易理解,就是当我们把网页的源代码获取下来后,使用BeautifulSoup来进行对特定内容的提取;

接下来就好理解了,BeautifulSoup既然是用来提出HTML源代码中的内容的,那我们只需要理解它的提取规则就行了;

 

1.讲规则之前,首先我们来理解一下简单的使用步骤;

   步骤:

  A.获取HTML源代码(requests) ->B.将源码传给BeautifulSoup并生成对象 -> C.通过BeautifulSoup实例对象调用方法获取指定内容;

 

2.规则

    根据上面的步骤,再来理解一下规则,也就是细节部分

    步骤A : 很好理解,就是用requests.get方法,或者其他方法来请求网页,获取网页源代码;例如:      html = requests.get(url).content.decode() 

    步骤B: 也很明了,将源码通过BeautifullSoup参数的形式传递,这一步需加入"指定解析器"环节,如   soup= BeautifullSoup(html,'lxml')   其中的"lxml"就是指定的解析器,另外可以是"html.parser"

    步骤C:  通过对象调用BeautifulSoup的方法,这里面常用的有以下几个方法:

     1.find   

     2.find_all

                  find,find_all参数相同原型:  find_all(name,attrs,recursive,text,**kwargs)

                  name  --html标签名  例如:body,div,li,ul

     attrs -- 参数的值是一个字典,字典的key是属性名,字典的value是属性值,例如:attrs = {'class':'useful'}

     recursive 的值为True或者False,当它为False的时候,BS4不会搜索子标签.

     text 可以是一个字符串或者是正则表达式,用于搜索标签里面的文本信息,因此,要寻找所有以"我需要"开头的信息,还可以使用下面的写法:

           content = soup.find_all(text = re.compile('我需要')

          for each in content:

            print(each.string)

    **kwargs 表示key = value形式的参数.这种方式也可以用来根据属性和属性的值进行搜索.这里的key是属性,value是属性值.如果搜索的html标签的class属性,就需要写成class_.大多                              数情况下,参数与标签配合使用,但是有时候如果属性值非常特殊,也可以省略标签,只用属性:

   find_all('div',id = 'test')

     find_all(class_ = 'iamstrange')

    

find,find_all 区别,find发现目标后,立即停止,返回目标BeautifulSoup Tag对象; find_all返回所有匹配到的BeautifulSoup Tag对象列表;需要使用遍历的方法来逐个输出匹配到的目标;

 

好吧,find,find_all,原型参数,啰嗦了一大阵,其实用的时候就那么几种,看个人习惯,哪种方式都可以,会用的,习惯的,也就是高效的;

 

 小结:使用BeautifulSoup的时候,首先需要得到网页的源代码,然后付给BeautifulSoup的实例化对象,通过对象去调用find,find_all方法      

posted @ 2021-06-16 16:05  另一个起点  阅读(94)  评论(0编辑  收藏  举报