【发布时间】:2013-02-09 06:34:39
【问题描述】:
我最近开始在 python 中编写一个程序,它允许用户轻松地结合任何动词。为此,我使用 urllib 模块打开相应的共轭网页。例如,动词“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 Parsing 方面的专业人士,所以这可能是一个简单的问题。
这是我的完整代码(我使用“++++++”来区分两者):
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)
【问题讨论】:
-
你如何处理'soup'变量?您是如何确定信息丢失的?
-
如果我尝试打印 'soup' 变量的美化版本,它不包含我想要的信息。
-
我这里也测试过,没有发现任何信息丢失。特别是,当调用
str(soup)并搜索它时,我找到了您在上面粘贴的确切文本(编辑: 与soup.prettify()相同)。也许您的问题在于您尝试检索该信息的方式,因此请在您使用soup的地方发布代码。 -
你怎么知道你正在失去它?使用
bs4,我没有丢失任何信息。 -
啊,我明白了。正在截断数据。比较:len(source) 与 len(str(soup))。这可能是编码问题。
标签: python parsing web beautifulsoup urllib