10

pycurlを使用してHTMLのページを取得しようとしているので、str.splitといくつかのforループを使用して関連情報を解析できます。PycurlはHTMLを端末に出力するため、HTMLを取得することは知っていますが、次のようなことを行おうとすると

html = str(c.perform())  

変数は、「なし」という文字列を保持するだけです。

pycurlを使用してhtmlを取得したり、コンソールに送信したものをリダイレクトして、上記のように文字列として使用したりするにはどうすればよいですか?

何か提案をしてくれた人に感謝します!

4

2 に答える 2

21

これにより、リクエストが送信され、レスポンスの本文が保存/印刷されます。

from StringIO import StringIO    
import pycurl

url = 'http://www.google.com/'

storage = StringIO()
c = pycurl.Curl()
c.setopt(c.URL, url)
c.setopt(c.WRITEFUNCTION, storage.write)
c.perform()
c.close()
content = storage.getvalue()
print content

応答ヘッダーを保存する場合は、次を使用します。

c.setopt(c.HEADERFUNCTION, storage.write)
于 2011-07-02T00:57:22.313 に答える
6

Perform()メソッドはhtmlフェッチを実行し、指定した関数に結果を書き込みます。HTMLを挿入するためのバッファと書き込み関数を提供する必要があります。通常、これは次のようにStringIOオブジェクトを使用して実行できます。

import pycurl
import StringIO

c = pycurl.Curl()
c.setopt(pycurl.URL, "http://www.google.com/")

b = StringIO.StringIO()
c.setopt(pycurl.WRITEFUNCTION, b.write)
c.setopt(pycurl.FOLLOWLOCATION, 1)
c.setopt(pycurl.MAXREDIRS, 5)
c.perform()
html = b.getvalue()

また、ファイルや一時ファイルなど、データを保存できるものを使用することもできます。

于 2011-07-02T01:02:17.623 に答える