当前位置: 首页 > 面试题库 >

美丽的汤和餐桌刮面-LXML与HTML解析器

燕和裕
2023-03-14
问题内容

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

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

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

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

问题答案:

BeautifulSoup文档中有一个特殊的段落,称为“解析器之间的差异”,其中指出:

Beautiful
Soup为许多不同的解析器提供了相同的接口,但是每个解析器都是不同的。不同的解析器将从同一文档创建不同的解析树。最大的区别在于HTML解析器和XML解析器之间。

在格式不正确的HTML文档中,差异变得很明显。

道德是,您应该使用在特定情况下有效的解析器。

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



 类似资料:
  • 我已经成功地编写了从第一页抓取数据的代码,现在我不得不在这段代码中编写一个循环来抓取下一个“n”页。下面是代码 如果有人能指导/帮助我编写代码,从剩余页面中提取数据,我将不胜感激。 谢谢

  • 下面是一个网络刮刀,它用漂亮的汤从这个网站上刮出一个团队名单。每一列数据都被放入一个数组,然后循环到一个CSV文件中。我想刮掉团队名称(代码中的“团队”),但我正在努力将元标记(见下文的html代码)合并到我的CSV写入器循环中。 我认为问题在于“Team”数组中的值长度与其他列中的值长度不匹配。例如,我当前的代码打印的数组如下所示: 但我需要团队数组(最后一个数组)匹配前两个数组的长度,如下所示

  • 问题内容: 使用漂亮的汤时,“ lxml”与“ html.parser”与“ html5lib”之间有什么区别?您什么时候可以使用另一种以及每种的好处?从我每次使用的时间来看,它们似乎是可互换的,但我确实得到纠正,我应该使用与此处的人员不同的方法。想加深我对这些的理解。我在这里已经阅读了几篇关于此的文章,但它们根本没有涉及太多用途。 范例- 问题答案: 从docs 的优缺点汇总表中: html.p

  • 我试图从一个网站上为我的项目收集数据。但是问题是我没有在我的输出中得到我在我的开发者工具栏屏幕中看到的标签。以下是我想从其中抓取数据的DOM的快照: 我能够获得类为“bigContainer”的div标记,但是我不能在这个标记中刮取标记。例如,如果我想得到网格项标记,我得到了一个空列表,这意味着它表明没有这样的标记。为什么会这样?请帮忙!!

  • 考虑一下这段代码: 它只打印“divTag” 更新: 我基本上想在'a'标签中提取“字符串”值。

  • 我有一个HTML文件。我试着打开它,读里面的内容 当我打印上述命令中的内容时,它可以完美地打印。但是,当我将内容传递给美丽汤并打印汤时,它会更改HTML代码 这是BeautifulSoup的输出 我不明白为什么它这样做。我需要从中提取3个标签,但它一直给出作为输出。 有人能帮帮我吗?