【发布时间】:2012-11-25 09:35:14
【问题描述】:
感谢本网站的好心用户,我对如何使用 re 作为非标准 python 模块的替代方案有了一些想法,这样我的脚本就可以在最小的悬垂下工作。今天,我一直在尝试解析模块。我遇到了beautifulsoup..这一切都很棒,但我不明白。
出于教育目的,我想从http://yify-torrents.com/browse-movie 中删除以下信息(请不要告诉我使用网络爬虫,我不是要爬取整个网站 - 只需从这个页面来了解解析模块是如何工作的!)
电影名称 质量 种子链接
这些项目有 22 个,我希望它们按顺序存储在列表中,即。项目_1,项目_2。而这些列表需要包含这三个项目。例如:
item_1 = ["James Bond: Casino Royale (2006)", "720p", "http://yify-torrents.com/download/start/James_Bond_Casino_Royale_2006.torrent"]
item_2 = ["Pitch Perfect (2012)", "720p", "http://yify-torrents.com/download/start/Pitch_Perfect_2012.torrent"]
然后,为了简单起见,我只想将每个项目打印到控制台。然而,为了让事情变得更加困难,这些项目在页面上没有标识符,所以 info.需要严格排序。这一切都很好,但我得到的只是每个列表项包含的整个源,或者是空项!一个示例项目分隔符如下:
<div class="browse-info">
<span class="info">
<h3><a href="http://yify-torrents.com/movie/James_Bond_Casino_Royale_2006">James Bond: Casino Royale (2006)</a></h3>
<p><b>Size:</b> 1018.26 MB</p>
<p><b>Quality:</b> 720p</p>
<p><b>Genre:</b> Action | Crime</p>
<p><b>IMDB Rating:</b> 7.9/10</p>
<span>
<p class="peers"><b>Peers:</b> 698</p>
<p class="peers"><b>Seeds:</b> 356</p>
</span>
</span>
<span class="links">
<a href="http://yify-torrents.com/movie/James_Bond_Casino_Royale_2006" class="std-btn-small mright">View Info<span></span></a>
<a href="http://yify-torrents.com/download/start/James_Bond_Casino_Royale_2006.torrent" class="std-btn-small mleft torrentDwl" data-movieID="2620" data-torrentID="2812">Download<span></span></a>
</span>
</div>
有什么想法吗?有人可以给我一个如何做到这一点的例子吗?我不确定漂亮的汤是否能满足我的所有要求! PS。抱歉英语不好,这不是我的第一语言。
【问题讨论】:
-
每当您开始考虑带有名为
x_1、x_2等变量的代码时,这通常表明您应该真正使用Python 列表,在这种情况下名为x.列表将使您的脚本更加健壮,因为您可以添加新元素并且列表将根据需要增长。如果您将程序设计为具有 4 个元素的一页,然后解析具有 6 个元素的不同页面,您的x_1方案将要求您更改输入循环,并且可能还需要更改打印循环。但是如果你已经编码使用一个列表,那么它会适应其他页面而不需要任何改变。
标签: python parsing html-parsing beautifulsoup