Python_爬虫_BeautifulSoup网页解析库


BeautifulSoup网页解析库

from bs4 import BeautifulSoup

0.BeautifulSoup网页解析库包含 的 几个解析器

  • Python标准库【主要,系统自带;】

    使用方法: BeautifulSoup(markup,"html.parser")【注:markup是html文档】
    Python的内置标准库

    案例:


from bs4 import BeautifulSoup

soup = BeautifulSoup.(html,'html.parser')

print(soup.title.string)
  • lxmlHTML解析器

    BeautifulSoup(markup,'lxml)
    速度快、需要安装C语言库
  • lxml XML解析器

    使用方法:BeautifulSoup(markup,"xml")
    速度快,唯一支持XML的解析器、需要安装C语言库

  • html5lib

    BeautifulSoup(markup,"html5lib")
    容错性好,以浏览器的形式解析文档,生成html5格式的文档,但是速度慢

1.BeautifulSoup基本使用



#!/usr/bin/env python 
# -*- coding:utf-8 -*- 

html="""
    <html>
        <head>
            <title>The Domouse's story</title>
        </head>
        <body>
            <p class="title" name="Domouse"><b>The Domouse's story</b></p>
            <p class="story">Once upon a time there were three little sisters;and their names were</p>
            <a href="http://www.baidu.com">百度</a>
            <p class="story">...</p>
        </body>
    </html>
    """
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
#获取标签正文内容
print("标签内正文内容:" + soup.title.name)
#获取属性内容
print("属性内容" + soup.p.attrs['name'])
#获取内容
print("获取内容" + soup.p.string)
#获取嵌套内容(多个筛选条件)
print("获取嵌套内容" + soup.head.title.string)
#子节点 和 孙节点【重要,,当目标标签没有id 或 class时候必须用这个】
print("子节点" + soup.p.contents)   #全部子节点,返回的是列表形式
print("子节点" + soup.p.contents[2])   #第三个一级子节点,不管是什么标签
#1. 子节点#子节点【迭代器,只能用循环形式拿到数据】
soup = BeautifulSoup(html,"lxml")
print(soup.p.children)
for i,child in enumerate(soup.p.children):
    print(i,child)
#2.子孙节点
soup = BeautifulSoup(html,"lxml")
print(soup.p.descendants)
for i,child in enumerate(soup.p.descendants):
    print(i,child)
#父节点 和 祖先借点
print(list(enumerate("父节点:" + soup.a.parent))) #父节点
print(list(enumerate("祖父节点:" + soup.a.parent))) #祖父点
#获取兄弟节点

print("后面的兄弟节点" + list(enumerate(soup.a.next_siblings)))    #后面的兄弟节点
print("前面的兄弟节点" + list(enumerate(soup.a.previous_slblings)))    #前面的兄弟节点
优质内容筛选与推荐>>
1、Javascript Date
2、最锋利的Visual Studio Web开发工具扩展:Web Essentials详解
3、Leetcode230题二叉搜索树中第k小的数
4、Email 发送
5、WPF 数据绑定Bingding基础(第四天)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号