在python中使用lxml和requests在具有特定类nam的特定标记之间获取文本

2024-09-28 01:28:50 发布

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

我试图获取具有特定类名的标记之间的所有文本。我相信我很快就能把它修好,所以我想它只需要一个简单的修复。在

在网站上,这些是我试图从中检索数据的标签。我要“SNP”。在

<span class="rtq_exch"><span class="rtq_dash">-</span>SNP  </span>

据我目前所知:

^{pr2}$

我明白了:

http://finance.yahoo.com/q?s=^GSPC&d=t None

为了证明它是有效的,当我改变这一行时:

if "rtq_dash" == class_name:

我得到了这个(请注意标记之间相同的“-”):

http://finance.yahoo.com/q?s=^GSPC&d=t -

我认为它会看到子标签并停止获取数据,但我不确定原因。在

我很乐意接受

<span class="rtq_dash">-</span>SNP  

作为跨度的字符串_标签文本,因为我可以轻易地砍掉我不想要的东西。在

更高级的描述,我想从页面上得到股票代码。在

Here是请求的文档,here是lxml(xpath)的文档。在

我想使用xpath而不是beauthulsoup有几个原因,所以请不要建议改为使用该库,因为这样做会更简单。在


Tags: 文档标记文本comhttp原因标签yahoo
2条回答

有一些可能的方法。您可以找到外部span,并返回它的直接子文本节点:

>>> url_link = "http://finance.yahoo.com/q?s=^GSPC&d=t"
>>> page = html.fromstring(requests.get(url_link).text)
>>> for span_text in page.xpath("//span[@class='rtq_exch']/text()"):
...     print(span_text)
... 
SNP

或者找到内部的span并得到tail

^{pr2}$

使用BeautifulSoup

import bs4

html = """<span class="rtq_exch"><span class="rtq_dash">-</span>SNP  </span>"""
soup = bs4.BeautifulSoup(html)
snp = list(soup.findAll("span", class_="rtq_exch")[0].strings)[1]

相关问题 更多 >

    热门问题