【发布时间】:2015-07-17 15:13:06
【问题描述】:
我正在使用 Python 2.7 尝试对网站进行简单调用以提取 HTML 数据,我使用以下代码对其进行了管理。
import requests
from HTMLParser import HTMLParser
name = "Mark"
surname = "Jacobs"
def req_getPageHTML(nume, prenume):
url = "http://sample.com/page.aspx&Name=" + name + "&surname=" + surname
response = requests.get(url).text
return response
page_code = req_getPageHTML(nume, prenume)
htmlp = HTMLParser()
print htmlp.feed(page_code)
接下来我想做的是以某种方式提取或解析这个UNICODE 响应(print type(page_code) 返回UNICODE)以某种方式从中提取一些信息。
具体来说,从我可以返回的下面的示例 HTML 中,我想提取值(在下面的 HTML 代码中略微插入的数字,并且还以 > 为前缀 - 这在 HTML 中不存在代码,只是为了方便大家识别)。
...
<tr class="tr1" OnClick="lockBac();">
<td class="tdB" rowspan="2" nowrap="nowrap">1</td>
<td class="tdB" rowspan="2" nowrap="nowrap">Jacobs D <br/>Mark</td>
<td class="tdB" rowspan="2" align="Center">Math speciality</td>
<td class="tdB" rowspan="2" align="Center">Advanced User</td>
> <td class="tdB" rowspan="2" align="Center">6.95</td>
> <td class="tdB" rowspan="2" align="Center">7.9</td>
> <td class="tdB" rowspan="2" align="Center">7.9</td>
<td class="tdB" colspan="4" align="Center"></td>
<td class="tdB" rowspan="2" align="Center">English</td>
<td class="tdB" rowspan="2" align="Center">B2-B2-B2-B2-B2</td>
<td class="tdB" colspan="3" align="Center">Mathematics MATH-INFO</td>
<td class="tdB" colspan="3" align="Center">Informatics</td>
<td bgcolor="lightgreen" class="tdB" rowspan="2" align="Center"></td>
<td class="tdB" rowspan="2" align="Center">8.88</td>
<td class="tdB" rowspan="2" align="Center">Success</td>
</tr>
<tr class="tr1" OnClick="lockBac();">
<td class="tdB"></td>
<td class="tdB"></td>
<td class="tdB"></td>
<td class="tdB"></td>
> <td class="tdB">9.35</td>
> <td class="tdB"></td>
> <td class="tdB">9.35</td>
> <td class="tdB">9.4</td>
<td class="tdB"></td>
> <td class="tdB">9.4</td>
</tr>
...
这些数字代表的是考试成绩,我稍后会将其放入数据库中。
现在,我正在尝试寻找一种有效的方法来提取这些数字,因为我宁愿将解析文本以查找每个元素(手动使用 SUBSTR 等)作为最后一个选项。
我确实遇到了 HTMLParser,如您所见,它也被导入到我的代码中,但底部的 print 返回 None。
我的印象是我可以使用这个库来解析从response 收到的文本,并且会有一种更简单的方法来指定标签 ID(或类似的东西)并从中提取相关信息(比如显示在HTMLParser examples section) 中,但我无法通过使用feed 方法获得所需的信息。
也许我没有正确理解这一点,也许我没有使用适当的工具,所以我也解释了我的目标。
如果能帮助我纠正或指出正确的方向,我将不胜感激。
【问题讨论】:
-
顺便说一句,发现 Python 有一个 awesome 的方式来处理
substring,只需指定类似page_code = page_code[page_code.index('tr class="tr1"') -
@RishavKundu 做得很好,谢谢!
标签: python html python-2.7 unicode