• 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方法      

  • 相关阅读:
    selenium模拟浏览器进行百度搜索
    爬虫出现Forbidden by robots.txt
    Scrapy和Headless Chrome采集动态网站数据
    爬虫框架Scrapy的安装与基本使用
    Python Selenium库的使用
    拦截器HandlerInterceptorAdapter使用方法
    Python多进程并发(multiprocessing)
    Oracle自定义DES3加解密
    Springboot手动添加quartz-jobs
    python 发送邮件接口
  • 原文地址:https://www.cnblogs.com/tinglele527/p/14889787.html
Copyright © 2020-2023  润新知