微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从不更改 URL 的网站抓取网页

如何解决从不更改 URL 的网站抓取网页

我对网络抓取非常陌生,我在抓取该网站的内容时遇到了一些困难。我基本想收集农药名称和有效成分,但网址没有变化,我找不到点击网格的方法。有什么帮助吗?

library(RSelenium)
library(rvest)
library(tidyverse)

rD <- rsDriver(browser="firefox",port=4547L,verbose=F)
remDr <- rD[["client"]]

remDr$navigate("http://www.cdms.net/Label-Database")

解决方法

此站点调用 API 以获取制造商列表:http://www.cdms.net/labelssds/Home/ManList?Keys=

在产品页面上,它还使用另一个带有制造商 ID 的 API,例如:http://www.cdms.net/labelssds/Home/ProductList?manId=537

您只需要遍历 Lst 数组并将结果附加到数据帧。 例如,以下代码获取前 5 个制造商的所有产品:

library(httr)

manufacturers <- content(GET("http://www.cdms.net/labelssds/Home/ManList?Keys="),as = "parsed",type = "application/json")
maxManufacturer <- 5

index <- 1
manufacturerCount <- 0
data = list()

for(m in manufacturers$Lst){
  print(m$label)
  productUrl <- modify_url("http://www.cdms.net/labelssds/Home/ProductList",query = list(
      "manId" = m$value
    )
  )
  products <- content(GET(productUrl),type = "application/json")

  for(p in products$Lst){
    data[[index]] = p
    index <- index + 1
  }

  manufacturerCount <- manufacturerCount + 1
  if (manufacturerCount == maxManufacturer){
    break
  }
  Sys.sleep(0.500) #add delay for scraping
}

df <- do.call(rbind,data)
options(width = 1200)
print(df)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。