0

シェルで次のコマンドを試しています。

curl -b usptoCookies -L -d "patentNum=6836866&applicationNum=10007391&maintFeeAction=Get+Bibliographic+Data&maintFeeYear=04" https://ramps.uspto.gov/eram/getMaintFeesInfo.do;jsessionid=0000Nmdd1Q_YsDF90HKmb9EIIgq:11g0uehq7

かなり簡単です。いくつかの変数をフォームに投稿しようとしています。ここでウェブページを見ることができます: https://ramps.uspto.gov/eram/

特許番号と出願番号を次のように入力してみてください: 6836866 と 10007391. 次に、Get Bibliographic Data ボタンをクリックします。

Web ページは何か (「きれいに」フォーマットされたテーブル) を返しますが、curl 呼び出しで「何らかの」問題が発生しているようです。私は途方に暮れています。ブラウザで firebug を使用して、フォームの投稿を完了するために必要な変数が上記の 3 つだけであることを確認しました。

応答が返されるので、https の問題ではありません。私は助けが必要です。

誰?

シャヒーブ・ローシャン

4

2 に答える 2

2

そのフォームには、「署名」を含む他の隠しフィールドがたくさんあります。ページをリクエストするたびに、これは一意の文字列のようです。これはおそらく、データベースからすべての情報をかき集めないようにするために使用される機能です。

非表示の署名フィールドを空にすると、エラーが返されました。この情報を取得するプログラムを作成する場合は、おそらくもう少し複雑なことを行い、最初に「署名」のあるページを取得する必要があります。これにより、その値をサイトにポストして、適切な対応。

于 2008-12-14T01:41:21.403 に答える
0

そうかもしれないと思ったので、スクレイピングの 1 つで、ブラウザーで開くことができるページにコンテンツを出力するようにしました。これにより、フォーム要素を操作して再送信し、特定の非表示フィールドを削除すると投稿に影響があるかどうかを確認できました. ページを開いて隠しフィールド (sessionId、signature、loadtime など) をすべて削除しても、フォームを送信して有効な応答を得ることができました。

これは、Cookie またはセッション関連の問題を示している可能性があると考えて、(Testing_Selenium パッケージを使用して) Selenium を起動し、同じスクレイプを試みました。Selenium は実際に本物のブラウザーを使用するため、セッション/Cookie の問題を排除する必要があるという考えでした。

Selenium の実行が curl の実行と同じように失敗したとき、私は途方にくれていました。

私は誰かがこのページについて、失敗を説明するかもしれない奇妙で異常な何かを見つけてくれることを望んでいました.

ご意見ありがとうございます。どう思いますか?

シャヒーブ R.

于 2008-12-14T17:47:09.660 に答える