我正在将一些网络爬虫代码从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[[1]]
开始,不断向更高的数字移动,直到看到我想要的数据。在这种情况下,我到了doc[[7]]
,并看到了我想要的数据。然后,我将读取该HTML表格,并将其分配给WebElem对象。最终,我会将其转换为数据框并进行操作。所以,我在Python中所做的是:
html = None
doc = None
html = driver.page_source
doc = BeautifulSoup(html)
然后我开始尝试使用
doc.get_text
,但我不太知道如何获取我想要查看的数据。我想要查看的数据类似于一个10x10的矩阵。当我使用R时,我只需要使用doc[[7]]
,那个矩阵几乎就是一个完美的结构,可以轻松将其转换为dataframe。然而,我似乎无法在Python中做到这一点。非常感谢任何建议。更新:
我已经能够使用Python获得我想要的数据-我按照这篇博客创建了一个包含Python的dataframe:Python Web-Scraping。这是我们在那篇博客中正在抓取的网站:Most Popular Dog Breeds。在那篇博客文章中,您必须逐步处理元素,创建字典,循环遍历表格的每一行并存储每列中的数据,然后您就能够创建一个dataframe。
对于R,我唯一需要编写的代码是:
doc <- htmlParse(remDr$getPageSource()[[1]],ignoreBlanks=TRUE, replaceEntities = FALSE, trim=TRUE, encoding="UTF-8")
df <- as.data.frame(readHTMLTable(doc, stringsAsFactors = FALSE)
只有这样,我就有了一个非常好的dataframe,只需要调整列名和数据类型即可-仅使用该代码,它看起来就像这样:
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更适合dataframes(至少对我来说是这样的,但我可能是错误的)?