No.7爬虫学习——bs4解析具体使用讲解

bs4只能用于python中

一、bs4进行数据解析

1、bs4进行数据解析的原理:

(1)标签定位

(2)提取标签、标签属性中存储的数据值

2、bs4实现数据解析的原理:

(1)实现化一个beautifulsoup对象,并且将页面源码数据加载到该对象中

(2)通过调用beautifulsoup对象中相关的属性或者方法进行标签定位和数据提取

3、环境安装(在cmd中安装)

pip install bs4

pip install lxml

4、如何实例化beautifulsoup对象

— from bs4 import BeautifulSoup #导入包

对象的实例化

(1)将本地的html文档中的数据加载到该对象中

fp = open('./test.html','r',encoding='utf-8')
soup = BeautifulSoup(fp,'lxml')

(2)将互联网上获取的页面源码加载到该对象中(通常使用第二种)

page_text = response.text

soup = BeautifulSoup(page_text,'lxml')

(3)提供的用于数据解析的方法和属性:

—soup.tagName:返回的是文档中第一次出现的tagName对应的标签

—soup.find(): 

        find('tagName'):等同于soup.div

        属性定位:soup.find('div',class_/id/attr='song')

—soup.find_all():返回的是符合要求的所有标签(列表)

—select:

                select('某种选择器(id,class,标签...选择器)'),返回的是一个列表

                层级选择器:soup.select('.tang>ul>li>a')      >表示的是一个层级

                                      soup.select('.tang>ul a')          空格表示的是多个层级

(4)获取标签之间的文本数据

        soup.a.text/string/get_text()

        区别:text / get_text():可以获取某一个标签中所有的文本内容

                   string:只可以获取该标签下面直系的文本内容

(5)获取标签中属性值

        soup.a['href']

from bs4 import BeautifulSoup #导入包
if _name_=="_main_":
    #将本地的html文档中的数据加载到该对象中
    fp = open('./test.html','r',encoding='utf-8')
    soup = BeautifulSoup(fp,'lxml') #实例化好的对象
    #print(soup)   打印出来的是test中的源码内容
    #print(soup.a) #soup.tagName 返回的是html中第一次出现的tagName标签
    #print(soup.div)
    #find('tagName'):等同于soup.div
    #print(soup.find('div')) #print(soup.div)
    #print(soup.find('div',class_='song')) #定位到class为song的div
    #print(soup.find_all('a')) #返回的是符合要求的所有标签(列表)
    #print(soup.select('.tang'))
    

    #print(soup.select('.tang>ul>li[1]')) #这种写法不支持的
应该写成:print(soup.select('.tang>ul>li>a')[0]) 层级选择器

 


版权声明:本文为m0_53547225原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。