我正在尝试从页面http://empres-i.fao.org/empres-i/2/obd?idOutbreak=225334&rss=t中删除数据。数据包含在几个似乎使用javascript动态生成的表中。 html源代码仅显示容器(id container1
和container2
),但不显示实际数据本身。我尝试使用以下代码在Windows 10系统上使用phantomjs(版本2.1.1。)
var url = 'http://empres-i.fao.org/empres-i/2/obd?idOutbreak=225334&rss=t';
var page = require('webpage').create();
page.open(url, function () {
console.log(page.content);
phantom.exit();
});
我的计划是使用phantomjs刮取评估的html然后使用R提取我需要的数据。我知道,R可能不是最好的工具,但它是我最熟悉的和我们在我的公司。
使用上面的代码,我也只是使用空容器获取未评估的源代码而不是数据(例如,当我在firefox中手动保存网页时获取)。为什么phantomjs没有评估javascript?我该怎么做才能访问数据?
我对网络平台很少有经验,如果有人能指出我正确的方向,我真的很感激。正如丹泽尔华盛顿喜欢在费城所说的那样,请向我解释,好像我是一个六岁的孩子一样。谢谢!
答案 0 :(得分:2)
不需要phantomjs(等)。只需使用隐藏的XHR API:
library(jsonlite)
str(fromJSON("http://empres-i.fao.org/empres-i/obdj?id=225334&lang=EN"))
## List of 31
## $ outbreak :List of 23
## ..$ id : int 225334
## ..$ reportingDate : chr "Mar 23, 2017"
## ..$ markerIcon : chr "domestic_red.png"
## ..$ localityName : chr "Cullman"
## ..$ localityQuality : chr "Centroid Admin2"
## ..$ region : chr "Americas"
## ..$ country : chr "United States of America"
## ..$ admin1 : chr "Alabama"
## ..$ latitude : num 34.1
## ..$ longitude : num -86.9
## ..$ status : chr "Confirmed"
## ..$ disease : chr "Influenza - Avian"
## ..$ serotypes : chr "H7N9 LPAI"
## ..$ source : chr "National authorities"
## ..$ speciesDescription : chr "domestic, unspecified bird"
## ..$ hasHumansAffected : logi FALSE
## ..$ humansAge : int 0
## ..$ speciesAffectedList :'data.frame': 1 obs. of 5 variables:
## .. ..$ id : int 109831
## .. ..$ idOutbreak : int 225334
## .. ..$ animalType : chr "Domestic"
## .. ..$ animalClass: chr "Birds"
## .. ..$ species : chr "Unspecified bird"
## ..$ laboratoryTestList :'data.frame': 1 obs. of 6 variables:
## .. ..$ id : int 74563
## .. ..$ idOutbreak : int 225334
## .. ..$ formattedResultDate: chr "22/03/2017"
## .. ..$ diseaseTested : chr "Influenza - Avian"
## .. ..$ speciesTested : chr "Unspecified bird"
## .. ..$ result : chr "Positive"
## ..$ sibMatchedIsolateList : list()
## ..$ formattedObservationDate: chr "23/03/2017"
## ..$ formattedReportingDate : chr "23/03/2017"
## ..$ idWorkspace : chr "empresi"
## $ strGeneralInfo : chr "GENERAL INFO"
## $ strDiseaseEventID : chr "Disease Event ID"
## $ strReportingDate : chr "Reporting date"
## $ strObservationDate : chr "Observation date"
## $ strLocation : chr "LOCATION"
## $ strRegion : chr "Region"
## $ strAdmin1 : chr "Admin 1 (Country)"
## $ strLocality : chr "Locality"
## $ strLatLong : chr "Lat/Long"
## $ strCoordsQuality : chr "Quality of Coordinates"
## $ strDisease : chr "DISEASE"
## $ strStatus : chr "Status"
## $ strSerotypes : chr "Serotype"
## $ strSource : chr "Source"
## $ strSpeciesAffected : chr "SPECIES AFFECTED"
## $ strAnType : chr "An.Type"
## $ strAnClass : chr "An.Class"
## $ strSpecies : chr "Species"
## $ strAtRisk : chr "At Risk"
## $ strCases : chr "Cases"
## $ strDeaths : chr "Deaths"
## $ strDestroyed : chr "Destroyed"
## $ strSlaughtered : chr "Slaughtered"
## $ strTest : chr "Test"
## $ strResult : chr "Result"
## $ strResultDate : chr "Result Date"
## $ strDiseaseTested : chr "Disease Tested"
## $ strReferenceLaboratory: chr "Reference Laboratory"
## $ strLaboratory : chr "LABORATORIES"
## $ strPageTitle : chr "Disease Event Details"