尝试使用R从网页上抓取商业网站

时间:2020-08-22 20:53:43

标签: html r rvest

我正在尝试抓取网站链接:

https://www.anelegantaffairbridal.com/?utm_source=theknot.com&utm_medium=referral&utm_campaign=theknot

来自“约会联系人”弹出窗口 https://www.theknot.com/marketplace/an-elegant-affair-cedar-falls-ia-537984使用R Studio。

我尝试过

page <- read_html("https://www.theknot.com/marketplace/an-elegant-affair-cedar-falls-ia-537984")
Website <- html_attr(html_nodes(page,xpath = '//*[@id="appointment-vendors-categories"]/div/div[3]/div[1]/span/a'),"href")

这是我的输出:character(0)。 所需的输出是:https://www.anelegantaffairbridal.com/?utm_source=theknot.com&utm_medium=referral&utm_campaign=theknot

我使用下面的代码成功地从页面底部的联系方式部分中抓取了信息,但该链接似乎无法使用相同的方法。

Name_of_Vendor2 <- substr((page %>% html_nodes("h3") %>% html_text),18,70)

Phone_of_Vendor <- html_text(html_nodes(page, xpath = "//div[@class = 'contact-info--900c8 body1--711dc']/span[2]"))

Address_of_Vendor <- html_text(html_nodes(page, xpath = "//div[@class = 'contact-info--900c8 body1--711dc']/span[1]"))

1 个答案:

答案 0 :(得分:0)

使用rvest::write_xml(page, file="temp.html")将下载的html写入文件后,对其进行查看。然后,我继续搜索URL,并在最后的script标签之一中找到它作为JSON对象,URL的键为websiteUrl。因此,我选择了最后一个脚本标签并对其内容运行一个正则表达式以获取URL

scripts <- html_nodes(page,xpath = '//script[@type="text/javascript"]')
script <-  html_text(scripts[[length(scripts)-1]])

stringr::str_extract(script,'(?<="websiteUrl":").+?(?=")')
#> [1] "http://www.AnElegantAffairBridal.com?utm_source=theknot.com&utm_medium=referral&utm_campaign=theknot"