0

私はこの URL を Web スクレイピングしています: http://www.rajtamil.com/category/vijay-tv-shows/

このエラーで立ち往生:

    movTitle = str(link['title'])
    UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 41: ordinal not in range(128)

ここに私のコードスニペットがあります

    rajTamilurl='http://www.rajtamil.com/category/vijay-tv-shows/'
    req = urllib2.Request(rajTamilurl)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3')
    response = urllib2.urlopen(req)
    link=response.read()
    response.close()

    #Here's what i've tried so far
    #link=link.decode('utf-8')
    #link=link.encode('utf-8','ignore')
    #link=link.decode('ascii', 'ignore')
    #soup = BeautifulSoup(link, from_encoding="utf-8")
    #soup = BeautifulSoup(link.decode('utf-8','ignore'))
    #soup = BeautifulSoup(link, 'html5lib')
    #print soup.prettify()

    soup = BeautifulSoup(link)
    for eachItem in soup.findAll('li'):
        for coveritem in eachItem.findAll("div", { "class":"cover" }):
            links = coveritem.find_all('a')
            for link in links:
                print link['title']
                movTitle = str(link['title'])

ポインタはありますか?

4

1 に答える 1

2

を使用することは強くお勧めしませんstrが、いくつかの制約があることは理解しています。この行を変更してみてください:

movTitle = str(link['title'])

これで:

movTitle = link['title'].encode('utf8')

文字列を取得encodeするunicodeと、それぞれのエンコードされたstrバージョンが取得されます。

お役に立てれば!

于 2014-02-21T22:51:44.690 に答える