我最近开始在python中开发一个程序,该程序允许用户轻松地共轭任何动词。为此,我使用urllib模块打开相应的共轭网页。例如,动词"beber"的网页是:
"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解析,所以这可能是一个简单的问题。
这是我的完整代码(我用"++++++"来区分两者(:
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)
当我编写解析器时,我遇到了bs问题,在某些情况下,由于html损坏,它找不到lxml,反之亦然。尝试使用lxml.html.
您的问题可能与编码有关。我认为bs4
可以与utf-8
一起使用,并且您的机器上默认设置了不同的编码集(包含西班牙语字母的编码(。所以urllib以您的默认编码请求页面,这没关系,所以数据在源中,它甚至可以打印出来,但当您将其传递给基于utf-8
的bs4
时,字符会丢失。尝试在bs4
中设置不同的编码,如果可能的话,将其设置为默认值。不过这只是猜测,别紧张。
我建议使用regular expressions
。我已经将它们用于我所有的网络爬虫。这是否对你有用取决于网站的动态性。但即使使用bs4
,这个问题仍然存在。你只需要手动编写所有的re
,让它发挥神奇的作用。在查找所需的foor信息时,您必须使用类似的bs4
方法。