如何从 HTML 段中提取名称“Terence Crawford”,不包括 Span 元素?

问题描述 投票:0回答:1

我目前在从 HTML 片段中检索姓名“Terence Crawford”时遇到困难。挑战在于排除存在于同一父元素中的 span 元素。

<td colspan="3" style="position:relative;" class="defaultTitleAlign">
<h1 style="display:inline-block;margin-right:5px;line-height:30px;">
                        <span style="font-weight:bold;"><i class="fas fa-crown" style="color:#f6b501 !important;"></i></span>
                    "Terence Crawford"
    </h1>
<div style="width:100%;position:relative;margin-top:5px;">
</div>
</td>

我尝试通过指定类属性“defaultTitleAlign”和样式属性“display:inline-block;margin-right:5px;line-height:30px;”来检索名称,但它只返回“/n”的真实姓名。即使定位 h1 元素的全部内容,也不会显示名称。

In [9]: response.xpath("//td[@class='defaultTitleAlign']/h1/text()").get()
Out[9]: '\n                        '
web-scraping xpath scrapy css-selectors
1个回答
0
投票

您可以使用

getall()
方法从给定的选择器中收集所有
text()
,然后您可以在返回的列表中找到您要查找的部分。

例如:

In [1]: from scrapy.selector import Selector

In [2]: html = """<td colspan="3" style="position:relative;" class="defaultTitleAlign">
   ...: <h1 style="display:inline-block;margin-right:5px;line-height:30px;">
   ...:                         <span style="font-weight:bold;"><i class="fas fa-crown" style="color:#f6b501 !important;"></i></span>
   ...:                     "Terence Crawford"
   ...:     </h1>
   ...: <div style="width:100%;position:relative;margin-top:5px;">
   ...: </div>
   ...: </td>"""

In [4]: response = Selector(text=html)

In [5]: text_list = response.xpath("//td[@class='defaultTitleAlign']/h1//text()").getall()

In [6]: text = text_list[1].strip()

In [7]: text
Out[7]: '"Terence Crawford"'

© www.soinside.com 2019 - 2024. All rights reserved.