提取文本中的HTML标签和数据。

2024-04-29 04:29:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python2.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方法中获得所需的信息。你知道吗

也许我没有正确理解这一点,也许我没有使用适当的工具,所以这就是为什么我也解释了我的目标。你知道吗

如果您能帮我纠正错误或给我指出正确的方向,我将不胜感激。你知道吗


Tags: 代码responsehtmlpagesurnameb2trclass
1条回答
网友
1楼 · 发布于 2024-04-29 04:29:52

我不知道如何处理你尝试过的东西,但我有不同的方法。你知道吗

您可以获取lxml,这是一个python库,可以帮助您清除XML和HTML。似乎Requests也会对这个项目有所帮助。你知道吗

page = requests.get('http://www.example.com')
tree = html.fromstring(page.text)

tree变量现在包含所有html文档,您可以根据需要对其进行解析。使用Xpath会有如下结果

scores = tree.xpath('//td[@class="tdB"]/text()')

希望有帮助。你知道吗

source

相关问题 更多 >