2017-09-01 13 views
0

背景

は、国連事務総長や他の臓器には、毎年、総会への報告の数百を発行し、これらのレポートの統一リストがないUN ODSからPDFをダウンロードしますその他の書類。しかし、文書コードhttp://undocs.org/[document code]と書式コードA/[Session]/[Document Number]を使用してこれらのレポートを読むための簡略化されたURLがあります。ドキュメントコードの例は "A/71/1"で、アクセスするURLは "https://undocs.org/A/71/1"となります。Google Appsのスクリプトのためにそこにあるように、

私は過去15年間これらのドキュメントをすべてダウンロードしようとしていますが、手動でこれらのドキュメントを手動で入力する代わりに、Google Apps Scriptをセットアップしてください。私は、例えば、簡単な方法UrlFetchApp.fetch("http://undocs.org/A/71/1");を使用しようとすると

問題

、それは私がページにアクセスする権限のない方法を使用していますというエラー・ページをフェッチします。これは、Cookieをブロックした場合や、シークレットウィンドウでページにアクセスしようとすると表示されるページと同じページです。

私は国連をハックしようとは考えていませんが、パブリックアクセスのためにいくつかのPDFをダウンロードするだけです。リクエストがページによって承認されるためには、どのような種類のパラメータを.fetch()メソッドと一緒に渡す必要があるのか​​把握する必要があります。

注:私は、すべてのガイダンスを探して、undocs.orgサイトを調べましたが、私は見つけませんでした。

TL; DR

をGoogle AppsスクリプトからUrlFetchAppを使用して、国連公式文書システムにアクセスしようとしているが、私は、許可される要求を取得する方法を見つけ出すことはできません。

答えて

1

短い答え - 私はあなたが1行でそれを得ることができるとは思わない。fetch

https://undocs.org/A/71/1を取得したときに返されるHTMLを見ると、コンテンツがhttps://daccess-ods.un.org/access.nsf/Get?OpenAgent&DS=A/71/1&Lang=Eから取得されるフレームが埋め込まれていることがわかります。

  • https://documents-dds-ny.un.org/prod/ods_mother.nsf?Login&Username=freeods2&Password=1234
  • Aは私が推測https://documents-dds-ny.un.org/doc/UNDOC/GEN/N16/206/02/PDF/N1620602.pdf?OpenElement

での実際のPDFにリダイレクトするロードフレーム:あなたは、そのフレームで返されるHTMLを見れば次に、あなたは二つのことが表示されます第1のリンクはログインが発生したことを示すクッキーを設定し、第2のリンクはコンテンツを返す前に検証する。あなたが試みることができる

もの:

  • あなたはまず、実際のP​​DFへのリンクを取得するために、それを解析し、undocs.orgからコンテンツを取得し、ログインしてPDFをフェッチマルチステップfetch、。 Google Apps Scriptはフェッチ間にCookieを保持する必要があります。

  • スクリプトをPythonなどの別のツールで記述します。

  • スパイダー/クローラツールを使用して、実際の人間のようにUNサイトをナビゲートします。

関連する問題