質問: プログラミングというより、airbnbのサイトの構造に関する質問となります。 Pythonでairbnbのスクレイピングをしているのですが、県別のリスティングIDを抽出したいと考えています。どのような方法で、県内の全てのリスティングIDをスクレイピングすることができるでしょうか?
回答: スクレイピング用の情報収集や試行錯誤で時間を取るより、契約してAirbnb APIの公式な資料を入手した方が早くて堅実だと思うのですが。仕様変更とか遮断に気を使わなくて済むでしょうし。 API Partner > > Connect to our API. > > Connect to millions of travelers on Airbnb. > > > サードパーティが収集してリストしている概要情報のページ Airbnb API | ProgrammableWeb > > Airbnb Officially Launches an API > > The long awaited Airbnb API is officially here. While Airbnb has publicly announced its official API, the API is not completely open to the public. Those interested must apply from access. Public documentation is not currently available. The focus of the initial API launch is the supply side. > > > Airbnbが正式にAPIを発表 > > 待望のAirbnb APIは正式にここにあります。 Airbnbは公式APIを公に発表しましたが、そのAPIは完全に一般公開されているわけではありません。 興味のある方はアクセスから申し込んでください。 公開文書は現在利用できません。 最初のAPI起動の焦点は供給側です。 > > > それとは別に、ユーザー登録していない訪問者がAirebnbのサイトで検索した場合にこのようなリクエストが出るようです。 ``` https://www.airbnb.jp/s/沖縄県--日本/homes?guests=1&refinement_paths%5B%5D=%2Fhomes&allow_override%5B%5D=&s_tag=IQcJExOH https://www.airbnb.jp/s/鳥取県--日本/homes?guests=1&refinement_paths%5B%5D=%2Fhomes&allow_override%5B%5D=&s_tag=o65CaWlw https://www.airbnb.jp/s/宮城県--日本/homes?guests=1&refinement_paths%5B%5D=%2Fhomes&allow_override%5B%5D=&s_tag=tfElWPeh ``` それぞれ、「沖縄県, 日本・宿泊先」「鳥取県, 日本・宿泊先」「宮城県, 日本・宿泊先」で検索。 末尾の`s_tag=XXXX`の部分が違うだけなので、その部分(IQcJExOH,o65CaWlw,tfElWPeh)が県を表している可能性があります。 ただし上記とは違う手順で「沖縄県, 日本・宿泊先」を検索したところ別のリクエストが出ました。 ``` https://www.airbnb.jp/s/沖縄県--日本/homes?refinement_paths%5B%5D=%2Fhomes&guests=1&query=沖縄県%2C%20日本&allow_override%5B%5D=&s_tag=OWuXfaCk ``` `guests=1`の位置がずれ、途中に`&query=沖縄県%2C%20日本`が入り、末尾の`s_tag=OWuXfaCk`が最初と違うので、何か別の情報なりルールが適用されたのかもしれません。 スクレイピング経験/知識の豊富な人ならば、こうした仕組みを探す作業も短く済むのかもしれませんが。 **追記** 思い立って、頭の部分だけで検索したら、それだけでも大丈夫でした。 以下で「沖縄県, 日本・宿泊先」を検索したのと同じになります。 ``` https://www.airbnb.jp/s/沖縄県--日本/homes ``` 沖縄県だけでもそうですが、件数は1回の表示に収まりきらないので、下へスクロールしていくと、続きが表示されていきます。 まあ単純にはなりましたが、使うためにはまだ色々と工夫が必要でしょうね。