R 网页抓取:我无法提取我想要的元素

时间:2021-02-22 15:01:53

标签: html r web-scraping rvest

我是使用 R 进行网页抓取的初学者。我正在尝试抓取以下网页:https://bkmea.com/bkmea-members/#/company/2523

我想用 proxy_cache 获取 div 节点下的所有文本元素,以及 class="company_name" 节点下的文本元素。例如,我正在尝试获取公司名称(“MOMO APPARELS”),如下面的 HTML 文本所示。

td

所以我写了以下代码:

<div class="comapny_header">
    <div class="company_name">MOMO APPARELS LTD</div> 
    <div class="view_all">View All</div>
</div>

如果我理解正确 - 第一个应该使用 library(textreadr) library(rvest) companyinfo <- read_html("https://bkmea.com/bkmea-members/#/company/2523") html_nodes(companyinfo,"div")%>% html_text() # it works html_nodes(companyinfo,"div.company_name")%>% html_text() # doesn't work html_nodes(companyinfo,"td") %>% html_text() # doesn't work 节点拉出文本。 第二个应该在 div 节点中提取属性等于 div 的文本。 第三个应该在 company_name 节点内提取文本。

第一个有效(这不是我想要的)但第二个和第三个无效 - 我做错了什么吗?

如果您能在这里帮助我,我将不胜感激!

非常感谢, 唱

1 个答案:

答案 0 :(得分:0)

您要查找的数据由该 API 检索(它不存在于 html 正文中):

GET https://bkmea.com/wp-admin/admin-ajax.php?action=bkmea_get_company&id=2523

您只需要从原始 url 中提取 id,构建上面的 url 并解析 json 结果如下:

library(httr)

originalUrl <- "https://bkmea.com/bkmea-members/#/company/2523"
id <- sub("^.+/", "", originalUrl)
userAgent <- "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"

output <- content(GET("https://bkmea.com/wp-admin/admin-ajax.php", query = list(
        "action" = "bkmea_get_company",
        "id" = id
    ), add_headers('User-Agent' = userAgent)), as = "parsed", type = "application/json")

print(output$company$company_info$company_name)

输出:

[1] "MOMO APPARELS LTD"
相关问题