• 第6章 网页解析器和BeautifulSoup第三方插件


    第一节 网页解析器简介
    作用:从网页中提取有价值数据的工具
    python有哪几种网页解析器?其实就是解析HTML页面
    正则表达式:模糊匹配
    结构化解析-DOM树:
    html.parser
    Beautiful Soup
    lxml
    第二节 BeautifulSoup模块介绍和安装
    介绍:是Python第三方库,用户从HTML或xml中提取数据
    官网:http://www.crummy.com/software/BeautifulSoup/
    安装并测试beautifulsoup4
    安装:pip install beautifulsoup4
    测试:import bs4
    第三节:BeautifulSoup4的语法
    分成三部分:创建对象、搜索节点
    创建一个BeautifulSoup对象---搜索结点 find_all、find方法
    访问结点名称、属性、文字

    <a href = "123.html" calss = "a"> python</a>举例
    代码:
    from bs4 import beautifulsoup
    #根据HTML网页字符串创建BeautifulSoup对象
    创建对象
    soup = BeautifulSoup(
        html_doc, #HTML文档字符串
        'heml.parser'  #HTML解析器
        from_encoding = 'utf8'  #HTML文档的边密码
        )
    搜索节点:
    #方法 find_all(name,attrs,string)
    #查找所有标签为a的节点
    soup.find_all('a')
    #查找所有标签为a,链接符合/view/123.html形式的节点
    soup.find_all('a',href='/view/123.html')
    soup.find_all('a',href='re.compile(r'/view/d+/.html)')

    #查找所有标签为divc,class为abc,文字为python的节点
    soup.find_all('div',class_='abc',string='python')
    访问结点信息:
    #得到结点:<a href = '1.html'>Python</a>
    #获取查找到的节点的标签名称
    node.name

    #获取查找到的节点的href属性
    node.['href']

    #获取查找到的节点的链接文字
    node.get_text()
    第四节 BeautifulSoup的实例测试

    亲测有效:需要安装bs4第三方库
    代码:
    import re
    from bs4 import BeautifulSoup
    html_doc = """
    <html><head><title>The Dormouse's story</title></head>
    <body>
    <p class="title"><b>The Dormouse's story</b></p>

    <p class="story">Once upon a time there were three little sisters; and their names were
    <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
    <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
    <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
    and they lived at the bottom of a well.</p>

    <p class="story">...</p>
    """



    soup = BeautifulSoup(html_doc,'html.parser',from_encoding='utf-8')

    links = soup.find_all('a')
    for link in links:
        print link.name,link['href'],link.get_text()


    link_node = soup.find('a',href = 'http://example.com/lacie')
    print link_node.name, link_node['href'], link_node.get_text()

    link_node = soup.find('a',href = re.compile(r'ill'))
    print link_node.name, link_node['href'], link_node.get_text()

    p_node = soup.find('p',class_ = 'title')
    print p_node.name, p_node.get_text()

  • 相关阅读:
    C# OCR 文字识别[初级]
    首次试用 NeoSwiff ,用C#开发FLASH版的多国语言翻译
    星期天上午买了个nokia 的NGage QD手机
    高兴,今天总算鸟枪换炮了~
    3年前的小程序:破解需要delphi IDE 环境的vcl 控件
    基于Ajax的五子棋演示
    学习API HOOK,编写了一个winsock 的封包抓取程序,可免费使用;
    我得小猫爱摔交
    老是不中,算了算“双色球”和“3D”,全买到底要多少¥¥。。(C 代码)
    总算忙完了,大家'晚秋快乐'!
  • 原文地址:https://www.cnblogs.com/Worssmagee1002/p/7365025.html
Copyright © 2020-2023  润新知