2017-08-31 16 views
0

私はウェブサイトからテーブルデータをスクラップしようとしています。私が欲しいデータは、onclickイベントの後ろに隠れています。python web scraping:onclick ajaxリクエストはステータス200で何も返しません。

<a class="text" onclick="javascript:openPAOnSR_RS('some_sku', 'brandname','divId', 'some_args','OPC Page Details');cmTagAndLink('Open Link','OPC Page Details',null,null,null);">The Click</a> 

クリック後、投稿リクエストと以下の詳細があります。

Request URL:http://www.somewebsite.com/catalog/tables.do?some_sku=sku&brandKey=brandname&divId=divId 
Request Method:POST 
Status Code:200 OK 
Remote Address:23.xxxxxxxxxxx 
Referrer Policy:no-referrer-when-downgrade 

私は以下のコードを書いたが、何も返さなかった。

from urllib.parse import urlencode 
from requests.exceptions import RequestException 
import requests 


def get_page_index(): 
    string_param = { 
     'some_sku': 'sku', 
     'brandKey': 'brandname', 
     'divId': 'divId' 
    } 

    url = "http://www.somewebsite.com/catalog/tables.do?" + urlencode(string_param) 
    try: 
     response = requests.post(url=url, data=string_param) 
     if response.status_code == 200: 
      print(response.url, response.content) 
      return response.text 
     return None 
    except RequestException as e: 
     print(e) 

私は何も出力を取得していない午前、ステータスが200がどのようにクリックイベントにデータ「背後」を取得する必要を示して?

+0

あなたはonclickイベントが発生したときを説明できますか?あなたがウェブサイトをリクエストした後、クリックしてから「JS」ダイアログボックスが表示され、その「JS」ボックスの後ろにデータがあります。私は正しい? –

+0

はい、正しいです。だから私はこのページを手に入れようとしており、JSダイアログボックスを起動するonclickリンクがあります。私はJSボックスからデータを抽出できることを知っていますが、JSダイアログを開始するにはどうすればいいですか?質問は、私は情報を抽出しようとしている複数の同様の構造化されたWebページを持っているということです。私はマウスがしている "クリック"を行うことができるスクレイピングスクリプトを書いてみたい。 –

答えて

0

urllibだけhtmlコンテンツをご対応いたしますので、あなたはそのウェブサイト上のJSのものに干渉することはできません、そこにモジュールがrobobrowserscrapyのようなものですが、彼らは唯一のhtmlチェックボックスやボタンをクリックします。
他のオプションは〜が好ましいです。

1)SeleniumPhantomを使用するヘッドレスブラウザを使用します。 Scrapy + splash

を使用して

2は、i)は、ステップ何をした後、あなたがボタンをクリックする前に行っていることを求めることができますか?
いくつかの情報を入力した後、ボタンをクリックしていますか?またはウェブサイトが表示されているときにボタンをクリックするだけですか?

関連する問題