spider-页面解析-CSS-BeautifulSoup4

spider-页面解析-CSS-BeautifulSoup4

  1. CSS 选择器:BeautifulSoup4

    lxml 只会局部遍历,而Beautiful Soup 是基于HTML DOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,所以性能要低于lxml。

    BeautifulSoup 用来解析 HTML 比较简单,API非常人性化,支持CSS选择器、Python标准库中的HTML解析器,也支持 lxml 的 XML解析器。

    Beautiful Soup 3 目前已经停止开发,推荐现在的项目使用Beautiful Soup 4。使用 pip 安装即可:pip install beautifulsoup4

    1. 安装

       pip install beautifulsoup4
      
    2. tag (可以使用文档对象直接.标签名获取)

       from bs4 import BeautifulSoup
      
       # html='....'
       #创建 Beautiful Soup 对象
       # soup = BeautifulSoup(html)
       
       #打开本地 HTML 文件的方式来创建对象
       soup = BeautifulSoup(open('data.xml'),"lxml")
       
       #格式化输出 soup 对象的内容
       # print(soup.prettify())
       print(soup.book) 
      

      我们可以利用 soup 加标签名轻松地获取这些标签的内容,这些对象的类型是bs4.element.Tag。但是注意,它查找的是在所有内容中的第一个符合要求的标签。
      print(soup.book)

    3. 对于 Tag,它有两个重要的属性,是 name 和 attrs

       from bs4 import BeautifulSoup
       
       # html='....'
       #创建 Beautiful Soup 对象
       # soup = BeautifulSoup(html)
       
       #打开本地 HTML 文件的方式来创建对象
       soup = BeautifulSoup(open('liepin.html'),"lxml")
       
       #格式化输出 soup 对象的内容
       # print(soup.prettify())
       
       nodes=soup.select('div.company-info p a')
       
       nodes=soup.select('div#div01 div.company-info > p[name="pr"] a')
       
       for node in nodes:
           #获取节点名称
           print(node.name)
       
           #获取节点所有属性
           print(node.attrs)
       
           #获取节点href属性的值
           print(node['href'])
           # print(node.get('href'))
      
           
           #获取节点的值
           print(node.string)		
      
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值