我最近开始研究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解析,所以这可能是一个简单的问题。
这是我的完整代码(我使用“+++++”来区分两者):
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)
答案 0 :(得分:1)
当我编写解析器时,我遇到了bs的问题,在某些情况下,由于html损坏,它没有找到找到的lxml,反之亦然。 尝试使用lxml.html。
答案 1 :(得分:0)
您的问题可能与编码有关。我认为bs4
适用于utf-8
,并且您的计算机上有不同的编码设置作为默认设置(包含西班牙语字母的编码)。所以urllib以你的默认编码请求页面,这没关系,因此数据存在于源代码中,它甚至可以打印出来,但是当你将它传递给基于utf-8
bs4
的字符丢失时。尝试在bs4
中设置不同的编码,如果可能,请将其设置为默认值。这只是猜测,放轻松。
我建议使用regular expressions
。我已将它们用于我的所有网络抓取工具。如果这对您有用,取决于网站的动态性。但即使您使用bs4
,问题仍然存在。你只需手动编写所有re
并让它发挥魔力。在查找您想要的信息时,您必须使用bs4
类似的方式。