我要从此页面抓取所有URL:
http://www.domainia.nl/QuarantaineList.aspx
我能够抓取第一页,但是,由于它不在URL中,因此无法更改该页。那么,如何通过抓取来更改页面?我一直在研究RSelenium,但无法正常工作。
我正在运行下一个代码以至少获取第一页:
#Constructin the to scrape urls
baseURL <- "http://www.domainia.nl/quarantaine/"
date <- gsub("-", "/", Sys.Date())
URL <- paste0(baseURL, date)
#Scraping the page
page <- read_html(URL) %>% html_nodes("td") %>% html_text()
links <- str_subset(page, pattern = "^\r\n.*.nl$")
links <- gsub(pattern = "\r\n", "", links) %>% trimws
答案 0 :(得分:0)
我已经看过网站了;它使用Javascript POST刷新其内容。 最初,HTTP-POST旨在将信息发送到服务器,例如,发送某人以表格形式输入的内容。因此,它通常包含您所来自页面上的信息,这意味着您可能需要更多信息,而不仅仅是“页面n”。
如果要获得另一个页面(如浏览器显示的那样),则需要发送类似的请求。 httr
程序包包含一个POST
函数,我认为您应该对此有所了解。
为了知道要发布的内容,我认为捕获浏览器的内容并进行复制最有用。在Chrome中,您可以使用“检查”标签下的“网络”标签查看发送和接收的内容,我敢打赌其他浏览器也有类似的工具。
但是,看起来该网站通过显示该信息来赚钱,如果其他来源也显示相同的内容,则他们将蒙受损失。因此,我怀疑它是否那么容易模仿,我认为请求的某些部分每次都不同,但是需要完全正确。例如,他们可以进行检查以查看整个页面是否已呈现,而不是像您一样丢弃。因此,如果他们故意使您很难做的事情,我不会感到惊讶。
这给我带来了一个完全不同的解决方案:问他们!
当我第一次尝试使用动态生成的内容抓取网站时,我也在挣扎。在我进一步浏览该网站之前,看到它们有一个链接,您可以在其中下载整齐的内容,并以一种很好的csv格式进行整理。
对于Web服务器而言,尝试抓取其网站的人们通常很不方便,它还需要服务器提供资源,这比下载文件的人要多得多。
他们很可能会告诉您“不”,但是如果他们真的不希望您获取他们的数据,我敢打赌他们很难抓。如果您从同一个IP发出太多请求,也许会被禁止,也许是其他方法。
而且,他们极有可能不希望自己的数据交由竞争对手掌握,但如果您仅将其用于特定目的,他们就会将其提供给您。
答案 1 :(得分:0)
(对于评论来说太大了,它本身也具有显着的形象,但没有答案)
Emil很有名,除了这是一个asp.net/sharepoint式的站点,具有二进制“视图状态”和其他真正的愚蠢的网络实践,这使得使用httr
几乎无法抓取:< / p>
当您确实使用Network
标签时(同样,如Emil所建议的那样),您也可以使用curlconverter
从请求中自动构建httr
VERB
函数作为cURL”。
对于该网站-假设进行抓取是合法的(它没有robots.txt
,而且我不会说流利的荷兰语,并且没有看到类似“条款和条件”的明显链接)–您可以使用类似{ {3}}或Selenium可以进行导航,单击和抓取,因为它的作用类似于真实的浏览器。