Python从HTML标签中提取数字

2024-04-30 04:51:45 发布

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

我正在用靓汤做刮板。我的职能是:

    journalist_result = soup.find_all("h4",class_="slab")
    if len(journalist_result)>0:
        journalist_share = int(re.match(r'\d+', journalist_result[0].get_text()).group())
    else:
        journalist_share=0

基本上,我要做的是提取共享链接的记者的数量。在本例中为221(示例见下文):

案例1:

^{pr2}$

我的代码适用于有记者共享或者找不到URL的情况。 但是,我的代码在以下情况下中断:

案例2:

<h4 class="slab" style="margin-bottom:5px">

      This link hasn't yet been shared by any journalists.<br /><a href="/pros">Learn about using Muck Rack Pro</a> to connect with journalists.
</h4>

这是因为在案例2中,没有找到记者。我得到的错误是:

回溯(最近一次呼叫): “文件”muckrackscraper.py“,第65行,英寸 记者共享=国际(重新匹配(r'\d+',记者_result[0].get_text()).group()) AttributeError:“NoneType”对象没有属性“group”

提前感谢您的帮助!在


Tags: 代码text刮板sharegetgroup情况result
1条回答
网友
1楼 · 发布于 2024-04-30 04:51:45

似乎您误解了代码失败的原因。在案例2中,不是,而是在案例1中,您不检查re.match的返回值,然后尝试对None进行函数调用。在

re.match documentation

Return None if the string does not match the pattern; note that this is different from a zero-length match.

因此,您的模式与journalist_result[0].get_text()中的任何内容都不匹配;请尝试检查此值并添加对None的检查。在

相关问题 更多 >