【问题标题】:Beautiful Soup and Table Scraping - lxml vs html parser美丽的汤和桌子刮 - lxml 与 html 解析器
【发布时间】:2014-11-01 02:12:15
【问题描述】:

我正在尝试使用 BeautifulSoup 从网页中提取表格的 HTML 代码。

<table class="facts_label" id="facts_table">...</table>

我想知道为什么下面的代码可以与"html.parser" 一起使用,如果我将"html.parser" 更改为"lxml",则会打印回none

#! /usr/bin/python

from bs4 import BeautifulSoup
from urllib import urlopen

webpage = urlopen('http://www.thewebpage.com')
soup=BeautifulSoup(webpage, "html.parser")
table = soup.find('table', {'class' : 'facts_label'})
print table

【问题讨论】:

    标签: python web-scraping html-parsing beautifulsoup lxml


    【解决方案1】:

    BeautifulSoup 文档中有一个特殊的段落称为Differences between parsers,它指出:

    Beautiful Soup 将相同的界面呈现给许多不同的 解析器,但每个解析器都是不同的。不同的解析器将创建 来自同一文档的不同解析树。最大的不同 位于 HTML 解析器和 XML 解析器之间。

    在非格式良好的 HTML 文档中,差异变得很明显。

    道德只是您应该使用适用于您的特定情况的解析器。

    还请注意,您应该始终明确指定您使用的解析器。这将帮助您在不同机器或虚拟环境上运行代码时避免意外。

    【讨论】:

      【解决方案2】:

      简答。

      如果你已经安装了lxml,就用它吧。


      html.parser - BeautifulSoup(markup, "html.parser")

      • 优点:包括电池,速度不错,宽大(从 Python 开始) 2.7.3 和 3.2。)

      • 缺点:不是很宽松(在 Python 2.7.3 或 3.2.2 之前)

      lxml - BeautifulSoup(markup, "lxml")

      • 优点:非常快,宽大

      • 缺点:外部 C 依赖

      html5lib - BeautifulSoup(markup, "html5lib")

      • 优点:非常宽松,解析页面的方式与网络浏览器相同,创建有效的 HTML5

      • 缺点:非常慢,外部 Python 依赖

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-13
        • 2021-09-12
        • 2019-02-15
        • 1970-01-01
        • 2021-01-15
        • 2020-02-24
        • 1970-01-01
        相关资源
        最近更新 更多