-1

私はPythonスクリプトを使用して、imdbから評価を自動的に抽出していましたが、結果から数値を抽出することはできません。

from pattern.web import URL
from pattern.web import plaintext
from pattern.web import decode_utf8
import re

def scrape_imdb(film):
    url = URL (film)
    s=url.download()
    decode_utf8(url.download(s))
    regels=re.compile(('"ratingValue">[0-9].[0-9]'))
    rating= regels.findall(s)
    rating2= rating[0:1]
    rating3= rating2.findall("[0-9"])

    regels2=re.compile ("<title>.*</title>")
    titel=regels2.findall(s)
    print titel, rating2

しかし、これは私にエラーを与えます。誰かが私が間違っていることを知っていますか?

4

2 に答える 2

3

あなたが別の答えへのコメントで書いたように:

私はまだ取得します:AttributeError:'list'オブジェクトには属性'findall'がありません

だからこれはあなたの問題のようです。re.findall一致のリストを返すので、リストも返しますrating。次にrating2 = rating[0:1]、を実行するときに、サブリストをに割り当てるrating2ので、それrating2自体もリストになります(ただし、単一の要素が含まれます)。リストにはfindallメソッドがないため、これは失敗します。

おそらくやりたいことは、次の最初の結果に対して別の正規表現を実行することですrating

rating = regels.findall(s)
rating2 = rating[0] # only get the first element; a string
rating3 = re.findall("[0-9]", rating2)
于 2013-02-18T22:05:30.323 に答える
0

ここにタイプミスがあると思います:

rating3= rating2.findall("[0-9"])

そのはず:

rating3= rating2.findall("[0-9]")
于 2013-02-18T21:55:19.557 に答える