我正在尝试从我的学校图书馆订阅的资源列表中提取资源/数据库名称和 ID 列表。有些页面列出了不同的资源,我可以使用 urllib2 获取页面,但是当我将页面传递给 BeautifulSoup 时,它会在列表中第一个资源的条目末尾之前截断其树。问题似乎出在用于将资源添加到搜索集的图像链接中。这是事情被切断的地方,这是 HTML:
<a href="http://www2.lib.myschool.edu:7017/V/ACDYFUAMVRFJRN4PV8CIL7RUPC9QXMQT8SFV2DVDSBA5GBJCTT-45899?func=find-db-add-res&resource=XYZ00618&z122_key=000000000&function-in=www_v_find_db_0" onclick='javascript:addToz122("XYZ00618","000000000","myImageXYZ00618","http://discover.lib.myschool.edu:8331/V/ACDYFUAMVRFJRN4PV8CIL7RUPC9QXMQT8SFV2DVDSBA5GBJCTT-45900");return false;'>
<img name="myImageXYZ00618" id="myImageXYZ00618" src="http://www2.lib.myschool.edu:7017/INS01/icon_eng/v-add_favorite.png" title="Add to My Sets" alt="Add to My Sets" border="0">
</a>
这是我的 python 代码:
import urllib2
from BeautifulSoup import BeautifulSoup
page = urllib2.urlopen("http://discover.lib.myschool.edu:8331/V?func=find-db-1-title&mode=titles&scan_start=latp&scan_utf=D&azlist=Y&restricted=all")
print BeautifulSoup(page).prettify
在 BeautifulSoup 的版本中,开头 <a href...>
出现了,但是 <img>
没有,<a>
立即关闭,其余的打开标签也是如此,一直到 </html>
.
我看到这些“添加到集合”图像的唯一区别特征是它们是唯一具有 name 和 id 属性的图像。不过,我不明白为什么这会导致 BeautifulSoup 立即停止解析。
注意:我几乎是 Python 的新手,但似乎对它的理解还不错。
感谢您的帮助!
最佳答案
你可以尝试使用 html5lib 而不是内置解析器来做漂亮的汤。
BeautifulSoup(markup, "html5lib")
html5lib 更宽松,并且经常解析内置解析器截断的页面。请参阅 http://www.crummy.com/software/BeautifulSoup/bs4/doc/#searching-the-tree 处的文档
关于python - 为什么 Beautiful Soup 会截断此页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/668591/