zoukankan      html  css  js  c++  java
  • 爬虫学习(十一)——bs4基础学习

    ba4的介绍:

    bs4是第三方提供的库,可以将网页生成一个对象,这个网页对象有一些函数和属性,可以快捷的获取网页中的内容和标签

    lxml的介绍

    lxml是一个文件的解释器,python自带的解释器是:html.parser

    import re

    from bs4 import BeautifulSoup
    # 把网页生成对象的对象拿出来
    soup = BeautifulSoup(open("test.html",encoding="utf8"),"lxml")
    # __str__此方法作用:打印对象会把对应的字符串打印出来
    # print(soup)
    # 打印出来的结果是网页的标签的字符串


    #方式一. 根据标签进行查找,只能知道第一个标签
    ret = soup.a

    print(ret)
    # 输出结果:是网页中的第一个标签及其里边内容,返回的是一个标签对象
    # 2.获取属性和内容

    print(soup.a.attrs)
    # 获取a标签中的属性,返回的是一个关于属性和属性值的字典,可以根据键值形式拿取属性值

    print(soup.a["href"])
    # 可以如此直接获取属性的值


    print(soup.a.text)
    print(soup.a.string)
    print(soup.a.get_text())
    # 可以获取标签中的内容
    # 注意:如果标签中还有标签,怎获取标签内容是获取所有标签中的内容
    print(soup.div.text.replace(" ","").replace(" ",""))
    # 输出内容是:将制表符,换行符替换为空字符串



    # 方式二,比第二种方式更加灵活,可以加(属性限制)条件,找到指定的标签
    # 返回的是一个a标签的对象
    tag = soup.find("a",class_="mu")
    print(tag)
    # 输出内容为a标签对象。
    # 注意:再根据class类进行索引标签时,要写成class_形式,不能写成class
    # 原因是class在python代码中是关键字,检索时防止代码错误识别!
    tag1 = soup.find("a",class_= re.compile(r"^mu"))
    print(tag1)
    # 注意可以进行加正则表达式对标签进行筛选

    print(soup.find_all("a") )
    #同find()一样拿取所有的a标签,返回的是一个含a标签对象的列表



    # 方式三,(重点)soup.select(),返回的是一个关于标签对象的列表
    # 适用于css的样式选择器
    tagre = soup.select(".mu")
    # 使用选择器进行标签的筛选
    print("*"*50)
    print(tagre)
    # 获取标签属性的值
    print(tagre[0]["href"])


    # 适用选择器种类
    # 标签选择器
    # 属性选择器
    # id选择器
    # class类选择器
    # 层级选择器
    # 伪类选择器
    # 组合选择器

    # 层级选择器(重点)
    # div p a 后边的节点是前边节点的子节点就可以
    print(soup.select(".tang #nan"))

    # div>p>span 后边的节点是前边节点的直接子节点就可以
    print(soup.select(".tang>ul>li"))

    #属性选择器(几乎不用)
    print(soup.select("a[class=mu]"))




    # 彩蛋:方式二和方式三组合使用
    # 如:
    c_soup = BeautifulSoup(open("test.html",encoding="utf8"),"lxml")
    tag1 = c_soup.find("div",class_="tang")
    print("*"*50)
    print(tag1.select(".tang a"))





     

    
    
  • 相关阅读:
    virtualenv
    linux基础命令:
    middleware
    scrapy-redis
    kubernetes 应用快速入门
    linux expect spawn的用法
    Linux 内存分析工具—free命令
    kubeadm安装kubenetes1.15.4集群
    kubenetes基本概念和术语
    docker-machine使用
  • 原文地址:https://www.cnblogs.com/kuangkuangduangduang/p/10376464.html
Copyright © 2011-2022 走看看