Python 漂亮的汤和桌子刮擦-lxml vs html解析器

Python 漂亮的汤和桌子刮擦-lxml vs html解析器,python,web-scraping,html-parsing,beautifulsoup,lxml,Python,Web Scraping,Html Parsing,Beautifulsoup,Lxml,我正在尝试使用BeautifulSoup从网页中提取表的HTML代码 <table class="facts_label" id="facts_table">...</table> BeautifulSoup文档中有一个特殊段落,称为: Beautiful Soup为许多不同的用户提供相同的界面 解析器,但每个解析器都是不同的。将创建不同的解析器 同一文档中的不同解析树。最大的区别 位于HTML解析器和XML解析器之间 在格式不规范的HTML文档上,差异变得很明显 寓意

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

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

BeautifulSoup
文档中有一个特殊段落,称为:

Beautiful Soup为许多不同的用户提供相同的界面 解析器,但每个解析器都是不同的。将创建不同的解析器 同一文档中的不同解析树。最大的区别 位于HTML解析器和XML解析器之间

在格式不规范的HTML文档上,差异变得很明显

寓意就是您应该使用在特定情况下工作的解析器


还要注意,您应该始终显式地指定您使用的解析器。这将帮助您避免在不同的机器或虚拟环境中运行代码时出现意外情况

简短回答。

如果您已经安装了
lxml
,只需使用它即可


html.parser-
BeautifulSoup(标记,“html.parser”)

  • 优点:内置电池,速度快,轻便(就像Python一样 2.7.3和3.2.)

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

lxml-
BeautifulSoup(标记,“lxml”)

  • 优点:速度快,宽大

  • 缺点:外部C依赖

html5lib-
BeautifulSoup(标记,“html5lib”)

  • 优点:非常宽松,像web浏览器一样解析页面,创建有效的HTML5

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

#! /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