メインページはjavascript関数を呼び出します
javascript:callTabContent('p','P090644','','en','procurement','procurementId');
ここでの主なものはプロジェクトIDP090644
です。これは、必要な言語とともに、パラメータとしてhttp://www.worldbank.org/p2e/procurement.htmlen
のフォームに渡されます。
このフォーム呼び出しは、URLhttp ://www.worldbank.org/p2e/procurement.html? lang=en&projId= P090644で複製できます。
関連するプロジェクトの説明のURLを抽出するコードは次のとおりです。
projID<-"P090644"
projDetails<-paste0("http://www.worldbank.org/p2e/procurement.html?lang=en&projId=",projID)
require(XML)
pdData<-htmlParse(projDetails)
pdDescribtions<-xpathSApply(pdData,'//*/table[@id="contractawards"]//*/@href')
#> pdDescribtions
href
#"http://search.worldbank.org/wcontractawards/procdetails/OP00005718"
href
#"http://search.worldbank.org/wcontractawards/procdetails/OP00005702"
href
#"http://search.worldbank.org/wcontractawards/procdetails/OP00005709"
href
#"http://search.worldbank.org/wcontractawards/procdetails/OP00005715"
おそらくあなたにも役立つExcelリンクが提供されていることに注意してください。説明リンクからスクラップする予定のデータが含まれている場合があります
procNotice<-paste0("http://search.worldbank.org/wprocnotices/projectdetails/",projID,".xls")
conAward<-paste0("http://search.worldbank.org/wcontractawards/projectdetails/",projID,".xls")
conData<-paste0("http://search.worldbank.org/wcontractdata/projectdetails/",projID,".xls")
require(gdata)
pnData<-read.xls(procNotice)
caData<-read.xls(conAward)
cdData<-read.xls(conData)
アップデート:
投稿されているものを見つけるために、javascript関数が呼び出されたときに何が起こるかを調べることができます。Firebugまたは同様のものを使用して、以下を開始するリクエストヘッダーをインターセプトします。
POST /p2e/procurement.html HTTP/1.1
Host: www.worldbank.org
とパラメータがあります:
lang=en
projId=P090644
または、 http: //siteresources.worldbank.org/cached/extapps/cver116/p2e/js/script.jsでjavascriptを調べて、関数を確認することもできますcallTabContent
。
function callTabContent(tabparam, projIdParam, contextPath, langCd, htmlId, anchorTagId) {
if (tabparam == 'n' || tabparam == 'h') {
$.ajax( {
type : "POST",
url : contextPath + "/p2e/"+htmlId+".html",
data : "projId=" + projIdParam + "&lang=" + langCd,
success : function(msg) {
if(tabparam=="n"){
$("#newsfeed").replaceWith(msg);
} else{
$("#cycle").replaceWith(msg);
}
stickNotes();
}
});
} else {
$.ajax( {
type : "POST",
url : contextPath + "/p2e/"+htmlId+".html",
data : "projId=" + projIdParam + "&lang=" + langCd,
success : function(msg) {
$("#tabContent").replaceWith(msg);
$('#map_container').hide();
changeAlternateColors();
$("#tab_menu a").removeClass("selected");
$('#'+anchorTagId).addClass("selected");
stickNotes();
}
});
}
}
関数の内容を調べると、関連するパラメーターをフォームに投稿してからWebページを更新していることがわかります。