1

[編集]

私はGoogleAppEngineを使用しており、いくつかの情報を抽出するためにHTMLコンテンツを解析しようとしています。私が使用しているコードは次のとおりです。

from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from google.appengine.api import urlfetch
import BeautifulSoup

class MainHandler(webapp.RequestHandler):
    def get(self):
        url = 'http://ascodevida.com/ultimos'
        result = urlfetch.fetch(url=url)
        # ADVS de esta página.
        res = BeautifulSoup.BeautifulSoup(result.content).findAll('div', {'class' : 'box story'})
        ADVList = []
        for i in res:
            story = i.find('a', {'class' : 'advlink'}).string
            link = i.find('a', {'class' : 'advlink'})['href']
            ADVData = {
                'adv' : story,
                'link' : link
            }
            ADVList.append(ADVData)

        self.response.headers['Content-Type'] = 'text/html; charset=UTF-8'
        self.response.out.write(ADVList)

そして、このコードは奇妙な文字で応答を生成します。BeautifulSoupライブラリのprettify()メソッドとrenderContent()メソッドを使用してみましたが、効果がありません。

解決策はありますか?再度、感謝します。

4

2 に答える 2

2

私は Java 開発者で、HTML 解析に jsoup を使用しています。Python用の同様のものを見つけました。これにより、時間を節約できます。

http://www.crummy.com/software/BeautifulSoup/

脳の栄養 : HTML 解析用の Python 正規表現 (BeautifulSoup)

于 2012-02-26T14:02:13.057 に答える
0

reprを呼び出すリストを直接印刷していると思います。デフォルトの出力は 16 進形式 (\xe1 など) です。

あなたはこれを試すことができます:

>>> s = u"Leer más"
>>> repr(s)
"'Leer m\\xc3\\xa1s'"

ただし、print ステートメントは文字列をデコードしようとします。

>>> print s
Leer más

正しい結果が必要な場合は、リストのデフォルトの動作を避けて、すべての項目を自分で処理してください。

于 2012-02-27T11:35:04.640 に答える