我正在尝试抓取网站链接:
来自“约会联系人”弹出窗口 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]"))
答案 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"