爬虫基础-bs4数据解析基础

bs4进行数据解析
    - 数据解析原理
        - 1. 标签定位
        - 2. 提取标签, 标签属性中存储的数据值
    - bs4数据解析原理
        - 1. 实例化一个BeautifulSoup对象,并且将页面源码加载到该对象中
        - 2. 通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位或者数据提取
    - 环境安装
          pip install bs4
          pip install lxml
    - 实例化BeautifulSoup
          from bs4 import BeautifulSoup
          import lxml
        - 对象的实例化:
            - 1. 将本地的html文档中的数据加载到该对象中
                1). 打开本地文件
                  fp = open('./localfile.html', 'r', enconding='utf-8')
                2). 加载实例, xml参数固定
                  soup = BeautifulSoup('fp', 'xml')
            - 2. 将互联网获取的页面源码加载到该对象中
                1). 获取互联网源码文件(text格式)
                  page_text = response.text
                2). 加载实例
                  soup = BeautifulSoup('page_text', 'xml')
            - 3. 提供的用于数据解析的方法和属性:
                 - soup.tagName                          #返回的是第一次出现的标签,比如soup.div
                 - soup.find()
                     soup.find('div')                  #相当于soup.div,返回的是单数
                     soup.find('div', class_='list')   #属性定位,可以是class(后面需要加_,否则就是关键字),也可以是id
                - soup.find_all()
                     soup.find_all('div')              #返回的是符合要求的所有div标签(列表)
                     soup.find_all('div', id='manlist')
                - soup.select()
                     soup.select('.id值')                #参数为某种选择器,可以是类属性或者标签,返回的是复数(列表)
                     soup.select('.classTag > ul > li > a')[0]      #层级选择器-单个层级: 定位到classTag属性的div标签中ul子标签中的a标签(列表),然后输出第一个[0]
                     soup.select('.classTag > ul a')[0]      #层级选择器-多个层级: 空格表示多个层级
                - 获取标签之间的文本数据
                    - soup.div.text/string/get_text()
                        - 几种方法的区别:
                            - text/get_text()          #获取某一个标签中所有的文本
                            - string                   #只可以获取该标签下直系的文本内容
                - 获取标签中的属性值
                             soup.a['href']

 

 

 

 

posted @ 2020-08-13 14:58  消磨_时间  阅读(121)  评论(0编辑  收藏  举报