2016-10-08 3 views
-1

私はウェブスクレイピングには新しく、最近はthisのようなページの電話番号を自動的に破棄しようとしています。私はSelenium/headless urlブラウザライブラリを使用するはずではありません。実際に電話番号をリクエストする方法を見つけようとしています。セレンで実際のボタンを押してください。電話番号の公開方法を把握できません

私のような新人のweb-scraperがアクセスできないという意味で自動的に電話番号を表示することさえできないかもしれないことを完全に理解しています。私はまだ専門家の観点から詳細な答えを得るために私の情報のための質問を提起したい。

"Reveal"ボタンのDOM要素を検索すると、これまでに見たことのないタグがいくつか表示されます。私は私のような初心者に役立つと信じている2つの主な質問があります。

1)未知のタグ/属性のセット(すなわち、吹き出しボタン内のデータ-qおよびデータ - 公開)が与えられると、ページ内のどのスクリプトが実際にそれらを使用しているかを知ることができるでしょうか?

2)私はボタンの要素のタグを次のように尋ねました:data-qとdata-revealは私が見つけることができる唯一のものですthisでした。

特に最初の質問には何か手掛かりがあります。以下は

よろしく、

あなたが最終的に解を得る前に、[OK]を、あなたの要求に応じて、いくつかのステップがあるのhref-ボタンのコード

<a href="#" class="btn-secondary set-right is-disabled" data-q="reply-panel-reveal-btn" data-reveal="advertId:1190345514" data-analytics="gaEvent:R2SPhoneBegin,zenoEvent:PhoneEvent,zenoOptions:{adId:1190345514,pageType:VIP}" data-toggler="channel:syi.reveal-phone,className:is-disabled,selfBroadcast:false" aria-expanded="true">Reveal</a> 

答えて

0

です。

第一ステップ:自分のブラウザを開き、目的のページを入力します(https://www.gumtree.com/p/vans/2015-ford-transit-custom-2.2tdci-290-l1-h1/1190345514

第二ステップ:(あなたのお気に入りのブラウザとしてChromeを使用していると仮定)を押しCtrlキー + Shiftキー + Iへコンソールを開き、コンソールで[ネットワーク]タグを選択します。

3番目のステップ:そのページの「Reveal」ボタンを押し、コンソールを注意深く見て、「Reveal」ボタンを押すと直ちに送信されるHTTP要求を捕まえます。リクエストにはクエリ文字列パラメータに長い数値の文字列が含まれていますが、実際はタイムスタンプです。

第4ステップ:httpリクエストに「Request Headers」という名前の部分があり、referer、user-agent、x-gumtree-tokenの値をコピーする必要があります。

第五ステップ:あなたの要求を構築するために試してみてください(私は、Pythonのファンです、だから私はあなたにPythonで私のサンプルコードを表示するつもりです)

import time 
import requests 
import json 

headers = { 
     'referer': 'please enter the value you just copied from that specific request', 
     'user-agent': 'please enter the value you just copied from that specific request', 
     'x-gumtree-token': 'please enter the value you just copied from that specific request' 
    } 

url = 'https://www.gumtree.com/ajax/account/seller/reveal/number/1190345514?_=' 

current_time = time.time() 
current_time = str(current_time) 
current_time = current_time.split('.')[0] + current_time.split('.')[1] + '0' 
url += current_time 
response = requests.get(url=url,headers=headers) 
response_result = json.loads(response.content) 
phone_number = response_result['data'] 
関連する問題