Python - 数据科学之提取HTML文档

  • 简述

    beautifulsoup。使用该库,我们可以搜索 html 标签的值并获取特定数据,例如页面标题和页面中的标题列表。
  • 安装 Beautifulsoup

    使用 Anaconda 包管理器安装所需的包及其依赖包。
    
    conda install Beaustifulsoap
    
  • 读取 HTML 文件

    在下面的示例中,我们向要加载到 python 环境中的 url 发出请求。然后使用 html parser 参数读取整个 html 文件。接下来,我们打印 html 页面的前几行。
    
    import urllib2
    from bs4 import BeautifulSoup
    # Fetch the html file
    response = urllib2.urlopen('http://cainiaoya.com/python/python_overview.htm')
    html_doc = response.read()
    # Parse the html file
    soup = BeautifulSoup(html_doc, 'html.parser')
    # Format the parsed html file
    strhtm = soup.prettify()
    # Print the first few characters
    print (strhtm[:225])
    
    当我们执行上面的代码时,它会产生以下结果。
    
    <!DOCTYPE html>
    <!--[if IE 8]><html class="ie ie8"> <![endif]-->
    <!--[if IE 9]><html class="ie ie9"> <![endif]-->
    <!--[if gt IE 9]><!-->
    <html>
     <!--<![endif]-->
     <head>
      <!-- Basic -->
      <meta charset="utf-8"/>
      <title>
    
  • 提取标签值

    我们可以使用以下代码从标签的第一个实例中提取标签值。
    
    import urllib2
    from bs4 import BeautifulSoup
    
    response = urllib2.urlopen('https://www.cainiaoya.com/python/python-jiaocheng.html')
    html_doc = response.read()
    
    soup = BeautifulSoup(html_doc, 'html.parser')
    
    print (soup.title)
    print(soup.title.string)
    print(soup.a.string)
    print(soup.b.string)
    
    当我们执行上面的代码时,它会产生以下结果。
    
    
    Python Overview
    None
    Python is Interpreted
    
  • 提取所有标签

    我们可以使用以下代码从标签的所有实例中提取标签值。
    
    import urllib2
    from bs4 import BeautifulSoup
    response = urllib2.urlopen('http://cainiaoya.com/python/python_overview.htm')
    html_doc = response.read()
    soup = BeautifulSoup(html_doc, 'html.parser')
    for x in soup.find_all('b'): print(x.string)
    
    当我们执行上面的代码时,它会产生以下结果。
    
    Python is Interpreted
    Python is Interactive
    Python is Object-Oriented
    Python is a Beginner's Language
    Easy-to-learn
    Easy-to-read
    Easy-to-maintain
    A broad standard library
    Interactive Mode
    Portable
    Extendable
    Databases
    GUI Programming
    Scalable