2016-08-16 14 views
1

自分で在庫を管理し、その商品を地元の分類サイトに送信するオンラインアプリを構築したいと考えています。このローカルの分類されたサイトには、APIはなく、複数のステップを持つ古い見た目のHTMLフォームしかありません。セレンやブラウザクライアントを使わずにオンラインアプリからフォームを送信する方法はありますか?

selenium/webdriverを使用せずに、またはfirefox/chromeを使用して仮想クライアントをスピンアップすることなく、ウェブページ上にフォームをリモート送信する方法はどこですか?送信プロセスは複数のステップからなるため、ある種のセッションをサポートする必要があります。

私はwebdriverとpythonを使用してこれを行っています。これは、オンラインでよく似た質問に対する最も一般的な回答です。

+0

PHPから 'cURL'を使うことができます。 – Barmar

+0

またはPythonの類似のライブラリ。 – Barmar

+0

ありがとう、私は非常にPHPに精通していますが、これは同様に多くの学習プロジェクトです。私は要求ライブラリがかなりシンプルに見えるので、Pythonを続行することを考えていました。 NodeJSを学ぶことが私の現在の目標です。 NodeJSには誰でもPythonのリクエストと同様の良いライブラリがありますか? – crispyfrybits

答えて

1

一般的に、このタスクにはHTTPクライアント/ライブラリを使用することができます(バックグラウンドでは、すべてのサーバーが正しいHTTP呼び出しを行うだけです)。

どの程度難しいかは、接続しているアプリケーションがどのように(ひどく)設計されているかによって決まります。

  • がここにサーバー
  • 例にPOST経由でデータを送信し、セッションクッキーを追跡

    • ログイン:最も単純なシナリオでは

      は、あなたがしたいと思いますPython requestsを使用していますが、これは今日では最も良いオプションです。

      今すぐ始めましょう。

      まず、ログインページのフォームを調べる必要があります。通常、HTMLを見ると、リクエストの作成方法に関する十分な情報が得られます。

      例は次のようになります。

      <form action="/login" method="POST"> 
          <input type="text" name="username"> 
          <input type="password" name="password"> 
          ... 
      </form> 
      

      クッキーを追跡するために、我々はSessionオブジェクトを使用するつもりだ:

      import requests 
      session = requests.Session() 
      

      次に、我々は資格証明書を提出するつもりですPOST(あなたのアプリがhttp://example.comの場合):

      response = session.post(
          'http://example.com/login', 
          data={'username': 'your_user', 'password': 'your_password'}) 
      

      この時点で、yoすべてがうまくいったことを確認するためにresponse.okを確認できます。 session.cookiesを調べると、セッションCookieが設定されているはずです。

      これ以降、そのセッションを使用してアプリケーションに行われたすべてのリクエストは認証され、ブラウザから実行したものと同等です。

      フォームデータを送信するには、アプリケーションがどのように動作しているかを調べるだけで済みます(フォームを検査してログインページを作成し、同じセッションを使用してPOST経由でデータを送信する)。

      ページHTMLが複雑な場合は、ブラウザの開発者ツールを使用してHTTPリクエストを見て、コードを使ってそれらを複製すると便利です。

    +0

    ありがとう赤い影!これは驚くべきことです、私が探していたものです。私はちょうど1つか2つの小さな質問があります。 1.他人のウェブサイトに依存しているコードを維持するのはどれくらい難しいのですか?彼らが要素名を変更したり、私が毎回私のアプリを更新する必要があると私は信じている方法に沿って小さな変更を加える場合。 2. NodeJSのために推薦できるライブラリがありますか、またはPythonとDjangoを使用することをお勧めしますか? – crispyfrybits

    +0

    メンテナンス性について、それが彼らがAPIを発明した理由です:)一般的に、システムがどのように統合されるべきかについて明確な「契約」を持ち、事態が突然変化しないことを保証したいと思うでしょうあなたのアプリを壊す。そのため、長期的には、サードパーティのアプリケーションの作成者が、使用できる適切なAPIを作成するように説得するのが最善の長期的な解決策です。残念ながらそれは常に可能なわけではないので、注意する必要があります。そして、物事が壊れたときに通知を受けるようにしてください。 – redShadow

    +0

    Pythonとjavascript/Nodejsについて、私の個人的な推奨はPythonです(私は両者で物事を構築していますが、Pythonはほとんどすべての面で非常に好んでいます)。 Webアプリケーション開発を始めたばかりの方には、間違いなくあなたが必要とする可能性の高いもの全てを提供するdjangoを見てください。 – redShadow

    0

    限り、あなたはポスト変数を知っているようにポストが探している、あなたは各ページを提出し、結果を得るためのpython 3.5またはrequestsでPython2.7、urllib.requestsurllib2を使用できることを、彼らは本当にちょうど提出されていると仮定投稿。

    関連する問題