python - 为什么 Beautiful Soup 会截断此页面?

标签 python screen-scraping beautifulsoup

我正在尝试从我的学校图书馆订阅的资源列表中提取资源/数据库名称和 ID 列表。有些页面列出了不同的资源,我可以使用 urllib2 获取页面,但是当我将页面传递给 BeautifulSoup 时,它会在列表中第一个资源的条目末尾之前截断其树。问题似乎出在用于将资源添加到搜索集的图像链接中。这是事情被切断的地方,这是 HTML:

<a href="http://www2.lib.myschool.edu:7017/V/ACDYFUAMVRFJRN4PV8CIL7RUPC9QXMQT8SFV2DVDSBA5GBJCTT-45899?func=find-db-add-res&amp;resource=XYZ00618&amp;z122_key=000000000&amp;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/

相关文章:

perl - 如何下载雅虎网上论坛?

python - 如何使用 BeautifulSoup 从特定表中获取所有行?

python - 从产品页面内部获取产品的所有图片

python - 为什么 ROS Publisher 不发布值?

python pandas csv导出

php - 抓取完整网站以获取特定 div 标签内的数据,其中 url 包含字符串

python - 如何将 BeautifulSoup HREF 搜索从 <a> 扩展到 <td>

python - 如何通过css选择器选择标签

python - 处理每个类方法的调用

Xpath 获取同一 div 中包含混合元素的文本