2016-10-16 19 views
-1

次の作成されたhtmlページを使用して、cgiserverからpythonを使用して情報にアクセスしようとしています。私は下のリダイレクトがcgiserverのローカルホストフォームスニペットのためにPythonで動作しない

<form action="http://pi-web.cisco.com/pims-home/fcgi-bin/BugReport/DDTS.cgi?Function=DDTS"> 
<input type="hidden" name="Function" value="DDTS"> 
By Production Build: <td valign=top> 
<table border=0 cellpadding=0 cellspacing=0> 
<tr> 
<td valign=top> 
&nbsp;From:&nbsp;</td> 
<td valign=top> 
<select name=from_prod_build> 
<option value="6_2_1_14I_DT_IMAGE" selected>6_2_1_14I_DT_IMAGE</option> 
</select> 
</td> 
<td valign=top> 
&nbsp;To:&nbsp;</td> 
<td valign=top> 
<select name=to_prod_build> 
<option value="6_2_1_16I_DT_IMAGE" selected>6_2_1_16I_DT_IMAGE</option> 
</select> 
</td> 
<td> 
<input type=checkbox name=explicit_only value=1> 
Explicit Commits Only</td> 
<td valign=bottom> 
&nbsp;&nbsp;&nbsp;<button type="submit" id="submit"name='by prod_bld'> 
</button> 
<script type="text/javascript"> 
document.getElementById("submit").click();</script> 
</form> 
</td> 

ではJavaScriptを使用して自動リダイレクトを実装していますしかし、私は、ページのリダイレクトWebブラウザで表示し、情報を表示するが、pythonで私だけのページをリダイレクト作成したページの取得とすることはできません。以下はpythonスクリプトです

from lxml import html 
import requests 
page=requests.get('http://localhost/requestDDTS.html',allow_redirects=True) 
print(page.url) 
tree = html.parse(page.text) 

どうすれば修正できますか?

答えて

0

リダイレクトがないため、最初のページしか取得できません。

HTMLページには、自動的にhttp://pi-web.cisco.com/pims-home/fcgi-bin/BugReport/DDTS.cgi?Function=DDTSに送信されるフォームがあります。最初のサイトはコード200で、301/302ではありません。リクエストライブラリはHTMLドキュメント内のjavascriptを解析せず、テキストコンテンツを取得するだけです。

Pythonスクリプトでこれを入れて:

payload = { 
    'Function': 'DDTS', 
    'by prod_bld': '', #this looks like typo, space instead of _ ? 
    'from_prod_build' : '6_2_1_14I_DT_IMAGE', 
    'to_prod_build' : '6_2_1_16I_DT_IMAGE' 
} 

page = requests.get('http://pi-web.cisco.com/pims-home/fcgi-bin/BugReport/DDTS.cgi', params=payload) 

これは、フォームのブラウザで提出した後に表示一つとして同じページを返す必要があります。

+0

ありがとう、それは完璧に機能しました! –

関連する問題