Python PycURLネットワークプログラミング[Pythonクラブ]
8486 ワード
Python PycURLネットワークプログラミング[Pythonクラブ]
Python PycURLネットワークプログラミング
urllibを使っているとよく死んでしまいますが、以前はdebugしたことがあり、timing outが設定されていないのでタイムアウトして死んでしまいます.
PycURLはcurlのpythonライブラリであり、curlの機能が実現されていないものもありますが、強力です.
curlは非常に強力なツールです
Googleの内部ではGDATA APIが使われていますUsing cURL to interact with Google data services
http://pycurl.sourceforge.net/に行って最新のPycURLをダウンロードすることができます.
簡単なPycURL例
PycURL自動処理クッキー
Pyc URL実現POST方法
urllibタイムアウト設定
Python PycURLネットワークプログラミング
urllibを使っているとよく死んでしまいますが、以前はdebugしたことがあり、timing outが設定されていないのでタイムアウトして死んでしまいます.
PycURLはcurlのpythonライブラリであり、curlの機能が実現されていないものもありますが、強力です.
curlは非常に強力なツールです
Googleの内部ではGDATA APIが使われていますUsing cURL to interact with Google data services
http://pycurl.sourceforge.net/に行って最新のPycURLをダウンロードすることができます.
簡単なPycURL例
import pycurl
import StringIO
url = "http://www.google.com/"
crl = pycurl.Curl()
crl.setopt(pycurl.VERBOSE,1)
crl.setopt(pycurl.FOLLOWLOCATION, 1)
crl.setopt(pycurl.MAXREDIRS, 5)
crl.fp = StringIO.StringIO()
crl.setopt(pycurl.URL, url)
crl.setopt(crl.WRITEFUNCTION, crl.fp.write)
crl.perform()
print crl.fp.getvalue()
PycURL自動処理クッキー
import pycurl
import StringIO
url = "http://www.google.com/"
crl = pycurl.Curl()
crl.setopt(pycurl.VERBOSE,1)
crl.setopt(pycurl.FOLLOWLOCATION, 1)
crl.setopt(pycurl.MAXREDIRS, 5)
crl.fp = StringIO.StringIO()
crl.setopt(pycurl.URL, url)
crl.setopt(crl.WRITEFUNCTION, crl.fp.write)
# Option -b/--cookie <name=string/file> Cookie string or file to read cookies from
# Note: must be a string, not a file object.
crl.setopt(pycurl.COOKIEFILE, "cookie_file_name")
# Option -c/--cookie-jar <file> Write cookies to this file after operation
# Note: must be a string, not a file object.
crl.setopt(pycurl.COOKIEJAR, "cookie_file_name")
crl.perform()
print crl.fp.getvalue()
Pyc URL実現POST方法
import pycurl
import StringIO
import urllib
url = "http://www.google.com/"
post_data_dic = {"name":"value"}
crl = pycurl.Curl()
crl.setopt(pycurl.VERBOSE,1)
crl.setopt(pycurl.FOLLOWLOCATION, 1)
crl.setopt(pycurl.MAXREDIRS, 5)
#crl.setopt(pycurl.AUTOREFERER,1)
crl.setopt(pycurl.CONNECTTIMEOUT, 60)
crl.setopt(pycurl.TIMEOUT, 300)
#crl.setopt(pycurl.PROXY,proxy)
crl.setopt(pycurl.HTTPPROXYTUNNEL,1)
#crl.setopt(pycurl.NOSIGNAL, 1)
crl.fp = StringIO.StringIO()
crl.setopt(pycurl.USERAGENT, "dhgu hoho")
# Option -d/--data <data> HTTP POST data
crl.setopt(crl.POSTFIELDS, urllib.urlencode(post_data_dic))
crl.setopt(pycurl.URL, url)
crl.setopt(crl.WRITEFUNCTION, crl.fp.write)
crl.perform()
print crl.fp.getvalue()
urllibタイムアウト設定
import socket
socket.setdefaulttimeout(5.0)