0

Python と Google App Engine の専門家、

次のリンクにある TD Bank の住宅ローン金利の Web サイトを取得したいと思います。

"http://tdbank.mortgagewebcenter.com/Default.asp"

私は今晩、チュートリアルを通じて Python と Google App Engine を学びましたが、おそらく GZIP の問題であると思われるものに行き詰まっています。

理想的には、私が下に貼り付けているコードを誰かに修正してもらいたいです。または、この Web ページを正常に受信し、python/google アプリ エンジンで解析できるようにするための正しいコードを提供してください (こちらの方が簡単な場合)。

試行 1 - URLFETCH

import webapp2
import gzip

import StringIO

from google.appengine.api import users
from google.appengine.api import urlfetch
from BeautifulSoup import BeautifulSoup

class MainPage(webapp2.RequestHandler):
    def get(self):
        url = "http://tdbank.mortgagewebcenter.com/Default.asp"
        result = urlfetch.fetch(url=url,headers={'User-Agent': 'Mozilla/5.0',
                                                 'Accept': 'text/html',
                                                 'Accept-Language': 'en-us,en',
                                                 'Accept-Encoding': 'gzip',
                                                 'Connection': 'keep-alive'})
        f = StringIO.StringIO(result.content)
        c = gzip.GzipFile(fileobj=f)
        content = c.read()
        self.response.out.write(content)

app = webapp2.WSGIApplication([('/', MainPage)],
                              debug=True)

試行 2 - URLLIB2

import cgi
import webapp2
import gzip
import StringIO
import urllib2
import httplib

from BeautifulSoup import BeautifulSoup

class MainPage(webapp2.RequestHandler):
    def get(self):
        httplib.HTTPConnection.debuglevel = 1
        url = urllib2.Request('http://tdbank.mortgagewebcenter.com/Default.asp')
        url.add_header('Accept-encoding', 'gzip')
        url.add_header('User-Agent', 'Mozilla/5.0')
        opener = urllib2.build_opener()
        f = opener.open(url)
        compresseddata = f.read()
    compressedstream = StringIO.StringIO(compresseddata)
        c = gzip.GzipFile(fileobj=compressedstream)
        content = c.read()
        self.response.out.write(content)

app = webapp2.WSGIApplication([('/', MainPage)],
                              debug=True)

YAML ファイル:

application: fimrates
version: 2
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /.*
script: fimrates.app

どちらの場合も、ブラウザはリダイレクトされます

http://localhost:8080/Default.asp?bhjs=1&bhqs=1

読み込もうとしている URL を www.google.com などの別の Web ページに変更すると、出力が適切に印刷されます。

よろしくお願いします。

-トッド

4

2 に答える 2

0

あなたが投稿した URL は、javascript でリダイレクトを行います。最終ページを取得する唯一の方法は、ブラウザーをシミュレートする場合です。これは、GAE では IMO 不可能です。

経由で html をダウンロードしたところ、curl -L http://tdbank.mortgagewebcenter.com/Default.asp「サポートされていないブラウザ」が表示されました。これは、このページが JavaScript でブラウザの種類をチェックすることを意味します。

http://tinypic.com/r/aa7tqd/6

于 2012-08-26T07:57:38.790 に答える
0

fetch コマンドで、パラメーター「follow_redirects=True」を追加してみてください。

于 2012-08-26T22:42:41.457 に答える