python tag对象下有多个标签、属性_Beautiful Soup 4.2.0 doc_tag、Name、Attributes、多值属性...

1 '''

2 对象的种类3 Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象。4 所有对象可以归纳为4种: Tag , NavigableString , BeautifulSoup , Comment 。5 '''

6

7 from bs4 importBeautifulSoup8

9 soup = BeautifulSoup('Extremely bold','lxml')10 tag =soup.b11 type(tag)12 #

13

14

15 #TAG.NAME

16 tag17 #Extremely bold

18 tag.name19 #'b'

20 tag.name = 'blockquote'

21 tag22 #

Extremely bold

23 '''

24 即tag首的''内,就是这个tag的名称.25 如果改变了tag的name,那将影响所有通过当前Beautiful Soup对象生成的HTML文档26 '''

27 tag.name = 'b'

28

29

30 #Attributes

31 '''一个tag可以有多个属性。如tag ,他有一个"class"属性,值为"boldest"。'''

32 #tag属性的操作方法与字典相同。

33 tag['class']34 #u'boldest'

35 tag.attrs #“点”取属性

36 #{u'class':u'boldest'}

37 '''

38 tag的属性可以被添加、删除或修改。tag的属性操作方法与字典一样。39 '''

40 tag['class'] = 'verybold' #属性查看

41 tag['id'] = 1 #属性查看

42 tag43 #

Extremely bold

44

45 del tag['class'] #属性删除

46 del tag['id'] #属性删除

47 tag48 #

Extremely bold

49

50 tag['class'] #删除属性后查看,报错

51 #KeyError: 'class'

52 print(tag.get('class'))53 #None

54

55

56 #多值属性

57 '''

58 最常见的多值属性是class,还有一些多值属性如 rel, rev, accept-charset, headers,accesskey等。59 多值属性在 BeautifulSoup 中的返回类型是list:60 '''

61 css_soup = BeautifulSoup('

62 css_soup.p['class']63 #["body", "skrikeout"]

64

65 css_soup = BeautifulSoup('

68 '''

69 (接上一行注释)而如果某个属性看上去有多个值,但在任何版本的HTML定义中都没有被定义为多值属性,70 那么BeautifulSoup会将这个属性作为字符串返回。如下↓71 '''

72 id_soup = Beautiful('

75 '''

76 将tag转换为字符串时,多值属性会合并为一个值77 '''

78 rel_soup = BeautifulSoup('

Back to the homepage

')79 rel_soup.a['rel']80 #['index']

81 rel_soup.a['rel'] = ['index','contents']#给a标签的rel属性添加值,转化在html里就是空格连接

82 print(rel_soup.p)83 #

Back to the homepage

84 '''

85 如果转换的文档是XML格式,那么tag中不包含多值属性86 '''

87 xml_soup = BrautifulSoup('

88 xml_soup.p['class'] #xml里的class属性值输出出来仍然是(如非多值属性的)字符串形式,而非列表

89 #u'body strikeout'

90

91

92 #可以遍历的字符串

93 '''

94 字符串常被包含在tag内,BeautifulSoup用 NavigableString 类来包装tag中的字符串:95 '''

96 tag.string97 #u'Extremely bold'

98 type(tag.string)99 #

100 '''

101 一个 NavigableString 字符串与Python中的Unicode字符串相同,102 并且还支持包含在遍历文档树和搜索文档树中的一些特性,103 通过unicode()方法可以直接将 NavigableString 对象转换成 Unicode 字符串:104 '''

105 unicode_string =unicode(tag.string)106 unicode_string107 #u'Extremely bold'

108 type(unicode_string)109 #

110 '''

111 tag中包含的字符串不能编辑,但是可以被替换成其它的字符串,用replace_with()方法:112 '''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值