python span标签的text属性_Python3 BeautifulSoup模块(3):bs4通过contents[0]获取子节点中不包含span标签,并且a标签本身不包含class属性的a标...

子节点

一个Tag可能包含多个字符串或其它的Tag,这些都是这个Tag的子节点.BeautifulSoup提供了许多操作和遍历子节点的属性.

注意: BeautifulSoup中字符串节点不支持这些属性,因为字符串没有子节点

一、实例代码

import urllib

from urllib import request

from bs4 import BeautifulSoup

import re

#获取页面

base_url = "http://www.3qphp.com/php/index.html"

urlb = urllib.request.urlopen(base_url)

cent = urlb.read()#解析出链接地址

soup = BeautifulSoup(cent,"html.parser")

slink = soup.find_all("a",href=re.compile(r"\/php\/(.+?)\/(\d+).html"))

#判断获取没有定义class属性,并且子标签中没有span的所有a标签

for link in slink:

if 'class' not in link.attrs and link.contents[0].name != 'span':

print(link)

二、重点知识点BeautifulSoup中attrs和contents属性:

link.attrs

link.contents[0].name

三、BeautifulSoup官方文档解释

tag的 .contents 属性可以将tag的子节点以列表的方式输出:

head_tag = soup.head

head_tag

#

The Dormouse's story

head_tag.contents

[

The Dormouse's story]

title_tag = head_tag.contents[0]

title_tag

#

The Dormouse's story

title_tag.contents

# [u'The Dormouse's story']

BeautifulSoup 对象本身一定会包含子节点,也就是说标签也是 BeautifulSoup 对象的子节点:

len(soup.contents)

# 1

soup.contents[0].name

# u'html'

字符串没有 .contents 属性,因为字符串没有子节点:

text = title_tag.contents[0]

text.contents

# AttributeError: 'NavigableString' object has no attribute 'contents'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值