我正在尝试使用rvest和phantomjs从网站上抓取数据。我以https://www.datacamp.com/community/tutorials/scraping-javascript-generated-data-with-r为例
但是,在运行system()
命令:ReferenceError: Can't find variable: fetch
时出现错误。我正在使用Windows 10和最新版本的Chrome。
这是我的代码:
library(rvest)
library(stringr)
library(plyr)
library(dplyr)
library(ggvis)
library(knitr)
system("./phantomjs-2.1.1-windows/bin/phantomjs scrape_test.js")
test1 <- xml2::read_html("propertyguru.html") %>%
html_nodes(".agent-info-listing a")
test1.2 <- html_text(test1)
我的js文件如下:
var webPage = require('webpage');
var page = webPage.create();
var fs = require('fs');
var path = 'propertyguru.html'
var part1 = 'https://www.propertyguru.com.sg/property-agent-directory/search?freetext="';
var part2 = 'jasmine+png';
var part3 = '"';
var webSite = part1 + part2 + part3;
page.open(webSite, function (status) {
var content = page.content;
fs.write(path,content,'w')
phantom.exit();
});
我将URL分为三个部分,以便能够轻松更改正在搜索的名称。里面的名字只是一个随机选择的名字。
如果运行此命令,则会得到错误和一个空列表作为回报:
ReferenceError: Can't find variable: fetch
https://cdn.pgimgs.com/1562812918/sf2-search/bundles/guruwidget/js/desktop/jquery.widgetGoogleAnalytics.js:113 in initUniveral
https://cdn.pgimgs.com/1562812918/sf2-search/bundles/guruwidget/js/desktop/jquery.widgetGoogleAnalytics.js:21 in init
[1] 0
我已经搜索了该错误,显然Safari存在问题,但未找到与Chrome有关的任何内容。有人建议将import 'whatwg-fetch';
包含到js文件中。但是,如果我这样做了,我的R脚本将永远运行,并且我什么都不会停止它-它只会运行。
有人知道出什么事了吗?我的目标是从网站上获取“ 12个活跃列表”部分。不幸的是,我是JS的新手,有点笨。
感谢您的帮助!