gpt4 book ai didi

html - 网页抓取 : how extract the text (names) in the hyperlinks in a web page?

转载 作者:可可西里 更新时间:2023-11-01 13:10:22 25 4
gpt4 key购买 nike

我是编程和 R 方面的新手。我需要一点帮助。我的诉求很简单(我知道,我很惭愧),因为你会很快解决。我在一个入侵植物物种项目中工作,我需要此列表中的植物物种名称列表:http://www.issg.org/database/species/List.asp

物种名称是超链接,如何将名称提取到数据框或表格中?

我一直在使用下面的代码提取链接,但链接中的文本没有物种名称:

url <- "http://www.issg.org/database/species/List.asp"
doc <- htmlParse(url)
links <- xpathSApply(doc, "//a/@href")

链接文本是这样的:第一种(例如“ecology.asp?si=1590&fr=1&sts=&lang=EN”) 第二类(例如“ecology.asp?si=1043&fr=1&sts=&lang=EN”)....

任何帮助将不胜感激。

最佳答案

只是对@jdharrison 的出色回答进行了细微的、微不足道的修改。

library(XML)
url <- "http://www.issg.org/database/species/List.asp"
doc <- htmlParse(url)
links <- doc["//a[contains(@href,'ecology.asp?')]"]
df <- data.frame(names=sapply(links,xmlValue))
head(df)
# names
# 1 Abelmoschus moschatus
# 2 Abrus precatorius
# 3 Acacia concinna
# 4 Acacia confusa
# 5 Acacia farnesiana
# 6 Acacia longifolia

所以事实证明你不需要使用xpathApply(...);您可以使用 [...] 中的 XPath“索引”XMLInternalDocument 对象。

links <- doc["//a[contains(@href,'ecology.asp?')]"]

这会生成满足 XPath 查询条件的节点的列表。然后,您可以使用 sapply(...)xmlValue(...) 函数“应用”到列表中的每个元素。

df    <- data.frame(names=sapply(links,xmlValue))

我们使用 sapply(...) 因为我们需要一个向量作为结果,并在调用 data.frame(...) 时将其变形为按照您的要求将其转换为数据框。

最后,我忍不住要对这种“感到羞耻”的事情发表评论(尽管我确定我会后悔的……)。您的问题提出得很好,简洁,有一个代码示例,您提供了您的数据集(通过链接),并且您清楚地说明了您想要的结果。我在SO上看到不到1%的问题是这样的,所以你应该感到羞愧的反面。

关于html - 网页抓取 : how extract the text (names) in the hyperlinks in a web page?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24187470/

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