【发布时间】:2014-10-12 01:51:38
【问题描述】:
我在运行 Python 2.7.8 的 MacOSX 上使用 BeautifulSoup4。我在从以下 html 代码中提取信息时遇到困难
<tbody tabindex="0" class="yui-dt-data" id="yui_3_5_0_1_1408418470185_1650">
<tr id="yui-rec0" class="yui-dt-first yui-dt-even">
<td headers="yui-dt0-th-rank" class="rank yui-dt0-col-rank"></td>
</tr>
<tr id="yui-rec1" class="yui-dt-odd">...</tr>
<tr id="yui-rec2" class="yui-dt-even">...</tr>
</tbody>
我似乎无法抓取表格或其中的任何内容,因为 BS 和/或 python 似乎无法识别带有连字符的值。所以通常的代码,比如
Table = soup.find('tbody',{'class':'yui-dt-data'})
或
Row2 = Table.find('tr',{'id':'yui-rec2'})
只返回一个空对象(不是 NONE,只是空的)。我对 BS4 或 Python 并不陌生,我之前已经从这个站点提取过信息,但是现在的类名与我之前做的不同。现在一切都有连字符。有什么方法可以让 Python 识别连字符或解决方法?
我需要使我的代码具有通用性,以便我可以在多个具有相同类名的页面上运行它。不幸的是,<tbody> 中的 id 属性对于该特定表是唯一的,因此我无法使用它来跨网页识别此表。
任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
我无法重现这个。是否有可能是 HTML 格式错误?
标签: python python-2.7 web-scraping beautifulsoup html-parsing