0

認識しない場合、これは美しいスープ 4 でこれをどのように解析する必要がありtd.font.unwrap()ますか? 交換したほうがいいですか?またはそれを開梱しますか?

<td align="CENTER">
    <font size="+2">横&lt;/font>(F
    <font size="+2">橫&lt;/font>)
</td>

の文字列を取得したいのですが、今取得しているの横(F橫) は: 横(F�)

私は td フィールドを問題なく呼び出していますが、最後の文字を取得できません...これが私が今呼び出している方法です y = cols[1].text

cols<td>フィールドで、これは行内の 2 番目のもの<tr>です ....

以下の完全なコード:

    # coding: utf8
from pysqlite2 import dbapi2 as sqlite3
import urllib2
from bs4 import BeautifulSoup
from string import *


conn = sqlite3.connect(':memory:')
cursor = conn.cursor()

# # create a table
def createTable():
    cursor.execute("""CREATE TABLE characters
                      (rank INTEGER, word TEXT, definition TEXT) 
                   """)


def insertChar(rank,word,definition):
    cursor.execute("""INSERT INTO characters (rank,word,definition)
                        VALUES (?,?,?)""",(rank,word,definition))


def main():
    createTable()

    # u = unicode("辣", "utf-8")

    # insertChar(1,u,"123123123")

    # content = "\n".join(response.readlines()[1:])
    soup = BeautifulSoup(urllib2.urlopen('http://www.zein.se/patrick/3000char.html').read())

    # print (html_doc.prettify())   

    tables = soup.blockquote.table

    # print tables



    rows = tables.find_all('tr')[1:]
    result=[]
    for tr in rows:
        # print tr
        cols = tr.find_all('td')
        character = []
        # col = cols.fonts.unwrap()
        # x = int (cols[0].string)
        x = 0
        y = cols[1].text
        # chars = y.find_all('font') 

        z = "11"
        print y
        # y = cols[1].string
        # z = cols[2].string

        # xx = unicode(x, "utf-8")
        # yy = unicode(y , "utf-8")
        # zz = unicode(z , "utf-8")
        insertChar(x,y,z)

    conn.commit() 

main()

私はあなたのすべての助けに感謝します! ありがとう

4

1 に答える 1

1

そのサイトはgb2312にあると主張していますが、そうではありません。これで修正されるはずです:

url = 'http://www.zein.se/patrick/3000char.html'
soup = bs4.BeautifulSoup(urllib2.urlopen(url).read(), from_encoding='gb18030')

あるいは単に

soup = bs4.BeautifulSoup(urllib2.urlopen(url).read(), from_encoding='gbk')

あなたのブラウザはそれを理解しました、しかしBeautifulSoupはヒントを必要とします。

于 2013-02-26T00:25:21.207 に答える