【问题标题】:Getting text inside a tag, after another tag在另一个标签之后获取标签内的文本
【发布时间】:2017-10-12 18:43:54
【问题描述】:

我正在用 selenium 和 bs4 抓取一些网页,我需要一些优雅的代码来执行以下操作。我在标签中有一些文字。

<td><a href="javascript:Team(14654)"><span class="hp">1</span>SJK Seinajoen</a></td

如果我这样做

find('td').get_text()

我得到的是

1SJK Seinajoen

因为它获取所有文本,包括 span 标签中的内容。我的问题是,有没有办法以pythonic方式获取span标签之后的标签内的文本?

我说 pythonic 是因为我总是可以对结果字符串进行拆分,但这不是很优雅

【问题讨论】:

  • 你要抓取的页面是什么?
  • 您希望从上面粘贴的元素中得到什么结果?是1 SJK Seinajoen 还是SJK Seinajoen?如果您需要第二个,那么我想您的问题已经得到解答。
  • 我希望得到没有跨度标签内的“1”的团队名称

标签: python web-scraping tags


【解决方案1】:

这是来自另一篇关于此问题的帖子:

如果你使用的是 bs4,你可以使用strings:

" ".join(result.strings)

【讨论】:

    【解决方案2】:

    lxml.html 中,您可以使用以下代码来获得所需的输出:

    from lxml import html
    
    source = """<td><a href="javascript:Team(14654)"><span class="hp">1</span>SJK Seinajoen</a></td>"""
    html = html.fromstring(source)  # pass web page HTML source code as "source" var
    print(html.xpath("//a/text()")[0])
    

    输出

    "SJK Seinajoen"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多