gpt4 book ai didi

python - 使用 Selenium Python 解析 HTML 并读取 HTML 表

转载 作者:行者123 更新时间:2023-11-30 22:45:20 27 4
gpt4 key购买 nike

我正在将一些网络抓取代码从 R 转换为 Python(我无法让 geckodriver 与 R 一起使用,但它可以与 Python 一起使用)。无论如何,我试图了解如何使用 Python 解析和读取 HTML 表格。快速背景知识,这是我的 R 代码:

doc <- htmlParse(remDr$getPageSource()[[1]],ignoreBlanks=TRUE, replaceEntities = FALSE, trim=TRUE, encoding="UTF-8")

WebElem <- readHTMLTable(doc, stringsAsFactors = FALSE)[[7]]

我会将 HTML 页面解析为 doc 对象。然后我会从 doc[[1]] 开始,然后移动更高的数字,直到看到我想要的数据。在这种情况下,我得到了 doc[[7]]并看到了我想要的数据。然后我会读取该 HTML 表并将其分配给 WebElem 对象。最终我会把它变成一个数据框并使用它。

所以我在 Python 中做的是这样的:

html = None
doc = None
html = driver.page_source
doc = BeautifulSoup(html)

然后我开始玩doc.get_text但我真的不知道如何获取我想查看的数据。我想要看到的数据就像一个 10x10 矩阵。当我使用 R 时,我只会使用 doc[[7]]对于我来说,该矩阵几乎是一个完美的结构,可以将其转换为数据帧。然而,我似乎无法用 Python 做到这一点。任何建议将不胜感激。

更新:

我已经能够使用 Python 获取我想要的数据 - 我按照此博客使用 python 创建数据框:Python Web-Scraping 。这是我们在该博客中抓取的网站:Most Popular Dog Breeds 。在那篇博文中,您必须按照自己的方式处理元素,创建一个字典,循环遍历表的每一行并将数据存储在每一列中,然后才能创建一个数据框。

使用 R,我唯一需要编写的代码是:

doc <- htmlParse(remDr$getPageSource()[[1]],ignoreBlanks=TRUE, replaceEntities = FALSE, trim=TRUE, encoding="UTF-8")

df <- as.data.frame(readHTMLTable(doc, stringsAsFactors = FALSE)

这样,我就有了一个非常好的数据框,我只需要调整列名称和数据类型 - 只需该代码,它看起来就像这样:

NULL.V1 NULL.V2 NULL.V3 NULL.V4
1 BREED 2015 2014 2013
2 Retrievers (Labrador) 1 1 1
3 German Shepherd Dogs 2 2 2
4 Retrievers (Golden) 3 3 3
5 Bulldogs 4 4 5
6 Beagles 5 5 4
7 French Bulldogs 6 9 11
8 Yorkshire Terriers 7 6 6
9 Poodles 8 7 8
10 Rottweilers 9 10 9

Python 中是否没有可用的东西可以使这变得更简单,或者这在 R 中更简单,因为 R 更适合数据帧(至少在我看来是这样,但我可能是错的)?

最佳答案

好吧,经过一番深入研究后,我觉得我找到了一个很好的解决方案——与 R 的解决方案相匹配。如果您正在查看上面链接中提供的 HTML,Dog Breeds ,并且您已为该链接运行网络驱动程序,您可以运行以下代码:

tbl = driver.find_element_by_xpath("//html/body/main/article/section[2]/div/article/table").get_attribute('outerHTML')

df = pd.read_html(tbl)

然后,只需几行代码,您就会看到一个非常漂亮的数据框:

在[145]中:df
输出[145]:
[ 0 1 2 3
0 品种 2015 2014 2013.0
1 猎犬(拉布拉多) 1 1 1.0
2 德国牧羊犬 2 2 2.0
3 猎犬 (金色) 3 3 3.0
4 斗牛犬 4 4 5.0
5 比格犬 5 5 4.0

我觉得这比按照博客的建议处理标签、创建字典并循环每一行数据要容易得多。这可能不是最正确的做事方式,我是 Python 新手,但它可以快速完成工作。我希望这对一些网络爬虫同行有所帮助。

关于python - 使用 Selenium Python 解析 HTML 并读取 HTML 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41214702/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com