码迷,mamicode.com
首页 > 其他好文 > 详细

bs4

时间:2018-01-29 15:43:51      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:element   换行   注意   数据   判断   find   迭代   bs4   访问   

from bs4 import BeautifulSoup
from bs4.element import *
data = """
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            <title>beatifulsoup learning note</title>
        <head>
        <body>
            <div id=‘id1‘ class = ‘parent‘>
                <span>i`m son1 <i>哈哈</i> </span>
                <span>i`m son2 </span>
            </div>
            <div id=‘id2‘, class = ‘parent2‘>
                <span>i`m son1 </span>
                <span>i`m son2 </span>
            </div>
            <div>哇哈哈</div>
        </body>
    </html>
    """
soup = BeautifulSoup(data, html.parser) # 创建一个实例,并制定解析引擎
#bs4 中的四大对象,Tag, NavigableString, BeautifulSoup, and Comment
#Tag 类似xml,html中的标签,如果学过html的话应该很好理解
#tag 标签都有共同的属性name, attrs 每个属性都以键值对形式存放
#print(soup.head.name)
#title
#print(soup.title)
#meta
#print(soup.meta.attrs)# attrs 所有属性
#print(soup.meta[‘content‘]) #访问content属性
#print(soup.meta.has_attr(‘content‘)) #判断是否含有某个属性
#header
#print(soup.head)
#body
#print(soup.body)
#=====================BeautifulSoup=======================类似html中的顶层对象 document?
#print(type(soup)) #‘bs4.BeautifulSoup‘
#print(type(soup.head)) #<class ‘bs4.element.Tag‘>  嗯暂时就这样理解吧

#=====================NavigableString=====================文本节点,文本字符串
#parent1 = soup.find_all(‘div‘) #返回的是 bs4.element.ResultSet包含所有的tag
#print(list(parent1))
parent1 = soup.find(div, id = id1) #找到属性为id1的标签
#print(parent1.name) #div

#print(list(parent1.children)) #返回所有的子节点 [‘\n‘, <span>i`m son1</span>, ‘\n‘, <span>i`m son2</span>, ‘\n‘]
#值得注意的是 children是一个可迭代对象,需要去遍历 当然我们可以通过contents直接取list
#不要忘了\n \t 也是一种节点,容易忽略的地方
#print(parent1.contents) #[‘\n‘, <span>i`m son1</span>, ‘\n‘, <span>i`m son2</span>, ‘\n‘]
# 第一个span
#print(parent1.span)#<span>i`m son1 </span>
# span中的文本
#print(parent1.span.string) #可以发现 string只获得纯文本,并包含子节点文本 此时返回了None
#print(parent1.span.text) #可以返回所有的文本
#print(parent1.get_text(strip = True)) #去除换行
#============================next_sibling, next_element, previous_element, previous_sibling, parent, next_siblings==============
#print(parent1.next_sibling.next_sibling) # 注意这里是两个next 因为之前说过\n也是一个节点 s
#print(parent1.next_element.next_element)#  <span>i`m son1 <i>哈哈</i> </span>
#print(list(parent1.next_siblings)) #所有的兄弟节点
#print(list(parent1.next_elements)) #当前节点下的所有节点,包括兄弟节点, 子节点


#以上只是总结常用的一些属性,方法,bs4是一个很强大的库,能够处理很复杂的数据环境,远不止这些。

 

bs4

标签:element   换行   注意   数据   判断   find   迭代   bs4   访问   

原文地址:https://www.cnblogs.com/alplf123/p/8376460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!