4

私は最近、ユーザーが任意の動詞を簡単に活用できるようにするPythonのプログラムに取り組み始めました。これを行うには、urllibモジュールを使用して、対応する活用のWebページを開きます。たとえば、動詞「beber」には次のWebページがあります。

" http://www.spanishdict.com/conjugate/beber "

ページを開くには、次のPythonコードを使用します。

source = urllib.urlopen("http://wwww.spanishdict.com/conjugate/beber").read()

このソースには、解析したい情報が含まれています。しかし、BeautifulSoupオブジェクトを次のように作成すると、次のようになります。

soup = BeautifulSoup(source)

解析したいすべての情報が失われているようです。BeautifulSoupオブジェクトを作成するときに失われる情報は、通常、次のようになります。

<tr>
      <td class="verb-pronoun-row">
    yo      </td>
                        <td class="">
      bebo        </td>
                          <td class="">
      bebí        </td>
                          <td class="">
      bebía        </td>
                          <td class="">
      bebería        </td>
                          <td class="">
      beberé        </td>
        </tr>

私は何が間違っているのですか?私は一般的にPythonやWeb解析の専門家ではないので、単純な問題かもしれません。

これが私の完全なコードです(2つを区別するために「++++++」を使用しました):

import urllib
from bs4 import BeautifulSoup

source = urllib.urlopen("http://www.spanishdict.com/conjugate/beber").read()
soup = BeautifulSoup(source)

print source
print "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
print str(soup)
4

2 に答える 2

1

私がパーサーを書いたとき、私はbsに問題がありました。場合によっては、htmlが壊れていたために、lxmlが見つからなかったり、その逆があったりしました。lxml.htmlを使用してみてください。

于 2013-02-24T12:50:52.187 に答える
0

問題はエンコーディングにある可能性があります。私はそれがbs4うまくいくと思います、utf-8そしてあなたはあなたのマシンにデフォルトとして異なるエンコーディングを設定しています(スペイン語の文字を含むエンコーディング)。したがって、urllibはデフォルトのエンコーディングでページを要求します。データがソースにあるので問題ありません。データは問題なく出力されますが、それにutf-8基づいbs4て渡す​​と、文字が失われます。で別のエンコーディングを設定することを検討しbs4、可能であればデフォルトに設定してください。これは単なる推測ですが、気楽に行ってください。

の使用をお勧めしregular expressionsます。私はすべてのWebクローラーにそれらを使用しました。これがあなたのために使用できるかどうかは、ウェブサイトの動的性に依存します。しかし、その問題は、を使用する場合でもありますbs4reすべてを手動で記述して、魔法をかけるだけです。bs4必要な情報を探すときは、同様の方法で作業する必要があります。

于 2013-03-02T21:35:10.897 に答える