Python提出表数の簡単な紹介
今日はpythonでwebフォームをコミットする方法を3つ見てみましょう.そのため、検索エンジンduckduckgoを使います.comは「python」をキーワードに検索し、結果をHTMLファイルとして保存します.pythonが持参したurllibモジュールと2つのサードパーティパッケージ:requestsとmechanizeを使用します.私たちは3つの小さなスクリプトでテストを行います.
urllibでWebフォームをコミットする
最初はurllibとurllib 2の2つのモジュールを使用する必要があります.彼らはpythonが持っている標準ライブラリで、import webbrowser、検索結果を開いて表示します.コードは次のとおりです.
Webフォームをコミットしたい場合は、フォームが誰によって呼び出されたか、どのリンクにパブリッシュされるかを最初に見つける必要があります.duckduckgoサイトにアクセスしてソースコードを表示すると、フォームのactionが「/html」を指していることがわかります.だからurlは「http://duckduckgo.com/html「.入力領域は「q」と名付けられているのでduckduckgoに検索キーワードを渡すには「q」に入力します「領域、これがurllib.urlencodeがしなければならないことです.検索語を符号化し、このurlを開き、検索します.検索結果はディスクに書き込まれます.最後に、webbrowserモジュールで保存した結果を開きます.requestsパッケージを使用する違いを見てみましょう.
requestsでWebフォームをコミットする
requestsパッケージはフォームを提出すると優雅で簡潔に見えます.次のようになります.
requestsを使用する場合は、フォームの領域名をkey、検索語をvalueとして辞書を生成し、requestsを使用します.postは検索して、最後に、検索結果のオブジェクト「r」を使って、その内容をディスクに書きます.ここでは、webbrowserモジュールでファイルを開く部分をスキップして、コードがより簡潔に見えるようにしました.次はmechanizeで同じことをしてみましょう.
mechanizeでフォームをコミットする
pythonでインターネットを閲覧する場合、mechanizeモジュールは非常に優れた特性を持っていますが、残念ながらjavascriptはサポートされていません.いずれにしても、どのように使用されているかを見てみましょう.
ご覧のように、mechanizeは前の2つの方法に比べて、少し煩雑に見えますが、robotsを無視する必要があります.txt、さもなくばそれは間違いがあって、もちろん、もしあなたがネットの規範を守るネットユーザーになりたいならば、あなたはそれを無視すべきではありません.まず、オブジェクトをブラウズして、それからこのurlを開いて、フォーム(ここでは「x」)を選択して、それから検索パラメータで辞書を創立して、覚えていて、異なる方法の中で、辞書を創立する方法は小さいことがあります.次に、このクエリーをコミットし、検索結果を読み、最終的にこの検索結果をディスクに保存します.ここまでで終わりです.
まとめ
上記の3つの方法の中で、requestsは最も簡単で使いやすい、urllibは比較的に厳格で、mechanizeはもっと多くのことをするために使われ、スクリーンをつかむこととサイトテストに使われているので、少し複雑ですが、少しもおかしくありません.seleniumでwebフォームを提出することもできます.このblogのアーカイブを読んで使い方を知ることができます.
ソース:http://www.blog.pythonlibrary.org/2012/06/08/python-101-how-to-submit-a-web-form/
urllibでWebフォームをコミットする
最初はurllibとurllib 2の2つのモジュールを使用する必要があります.彼らはpythonが持っている標準ライブラリで、import webbrowser、検索結果を開いて表示します.コードは次のとおりです.
import urllib
import urllib2
import webbrowser
url = "http://duckduckgo.com/html"
data = urllib.urlencode({'q': 'Python'})
results = urllib2.urlopen(url, data)
with open("results.html", "w") as f:
f.write(results.read())
webbrowser.open("results.html")
Webフォームをコミットしたい場合は、フォームが誰によって呼び出されたか、どのリンクにパブリッシュされるかを最初に見つける必要があります.duckduckgoサイトにアクセスしてソースコードを表示すると、フォームのactionが「/html」を指していることがわかります.だからurlは「http://duckduckgo.com/html「.入力領域は「q」と名付けられているのでduckduckgoに検索キーワードを渡すには「q」に入力します「領域、これがurllib.urlencodeがしなければならないことです.検索語を符号化し、このurlを開き、検索します.検索結果はディスクに書き込まれます.最後に、webbrowserモジュールで保存した結果を開きます.requestsパッケージを使用する違いを見てみましょう.
requestsでWebフォームをコミットする
requestsパッケージはフォームを提出すると優雅で簡潔に見えます.次のようになります.
import requests
url = "http://duckduckgo.com/html"
payload = {'q':'python'}
r = requests.post(url, payload)
with open("requests_results.html", "w") as f:
f.write(r.content)
requestsを使用する場合は、フォームの領域名をkey、検索語をvalueとして辞書を生成し、requestsを使用します.postは検索して、最後に、検索結果のオブジェクト「r」を使って、その内容をディスクに書きます.ここでは、webbrowserモジュールでファイルを開く部分をスキップして、コードがより簡潔に見えるようにしました.次はmechanizeで同じことをしてみましょう.
mechanizeでフォームをコミットする
pythonでインターネットを閲覧する場合、mechanizeモジュールは非常に優れた特性を持っていますが、残念ながらjavascriptはサポートされていません.いずれにしても、どのように使用されているかを見てみましょう.
import mechanize
url = "http://duckduckgo.com/html"
br = mechanize.Browser()
br.set_handle_robots(False) # ignore robots
br.open(url)
br.select_form(name="x")
br["q"] = "python"
res = br.submit()
content = res.read()
with open("mechanize_results.html", "w") as f:
f.write(content)
ご覧のように、mechanizeは前の2つの方法に比べて、少し煩雑に見えますが、robotsを無視する必要があります.txt、さもなくばそれは間違いがあって、もちろん、もしあなたがネットの規範を守るネットユーザーになりたいならば、あなたはそれを無視すべきではありません.まず、オブジェクトをブラウズして、それからこのurlを開いて、フォーム(ここでは「x」)を選択して、それから検索パラメータで辞書を創立して、覚えていて、異なる方法の中で、辞書を創立する方法は小さいことがあります.次に、このクエリーをコミットし、検索結果を読み、最終的にこの検索結果をディスクに保存します.ここまでで終わりです.
まとめ
上記の3つの方法の中で、requestsは最も簡単で使いやすい、urllibは比較的に厳格で、mechanizeはもっと多くのことをするために使われ、スクリーンをつかむこととサイトテストに使われているので、少し複雑ですが、少しもおかしくありません.seleniumでwebフォームを提出することもできます.このblogのアーカイブを読んで使い方を知ることができます.
ソース:http://www.blog.pythonlibrary.org/2012/06/08/python-101-how-to-submit-a-web-form/