ヘッドレスブラウザなしでAvitoをスクレイピング

最近、ヘッドレスブラウザのないHabréScrapingの最新のWebサイトに記事が公開されました。コメントでは、ヘッドレスブラウザがないと、AvitoまたはYuleの広告から電話番号を取得できないことが示唆されました。これに反論したいのですが、以下は「avito」の解析に成功した100行未満のコードのpythonスクリプトです。





私はサイトの「解析」のスペシャリストではなく、これは私の仕事ではありませんが、タスクだけでなく、自分の仕事を解決するためにこれを行うことも珍しくありません。たとえば、このためのAPIを持たない一部のサービス(モバイルオペレーター)の個人アカウントの残高を取得する必要があります。または、非常に悲しいことに、同じくAPIを持たないレジストラ(別の1つ)からドメインのリストを取得する必要があります。





記事のように、この投稿を書くように促したいくつかのコメント、私もPythonとリクエストライブラリを使用しています。「内部」APIが見つからない場合は、BeautifulSoupライブラリを含める必要があります。しかし、ここではすべてがはるかに単純であることが判明しました。





サイトhttps://avito.ruの「フル」バージョンを開いて電話番号をコピーしようとすると、サイトの電話番号は書かれておらず、描かれていることが明らかになります。ただし、モバイル版のサイトでは、番号はテキストで示されています。これは、ブラウザの開発者ツールで[通話]ボタンをクリックしたときの応答を確認することで確認できます。





スクリプトを詳細に分析することはしません。コードには、何がどの段階で起こっているのかを理解するのに十分なコメントがあります。つまり、モバイル版のサイトを使用し、サイトを検索するための変数を宣言し、さらに詳しくは「key」と「cookie」の2つの変数を宣言し、メインページを開いてCookieを取得するプロセスを開始し、収集するサイクルを開始します。すべてのページを通過するすべての広告のID。2番目のサイクルですべての広告を受け取ったら、それらを調べて、関心のある情報を取得します。





スクリプトのスクリーンショット:





, .. API. - API. , , . . - . - 100 .





"key" "cookie", key , , - . cookie , "", , IP , "" .





興味深い場合は、APIをどのように探していたかについて詳しく説明するか、「whirligig」の同様の例を作成できます。





スクリプト自体








All Articles