我是使用 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
节点内提取文本。
第一个有效(这不是我想要的)但第二个和第三个无效 - 我做错了什么吗?
如果您能在这里帮助我,我将不胜感激!
非常感谢, 唱
答案 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"