如何从响应usearpy获取XML标记中的注释?

2024-09-19 23:34:58 发布

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

我收到了来自下面类似于服务器的代码的响应。
我想在CDATA部分中获取<lyric></lyric>标记之间的链接。在

<lyric><![CDATA[https://lrc-nct.nixcdn.com/2018/02/21/f/b/1/1/1519207822262.lrc]]></lyric>
<bgimage><![CDATA[https://avatar-nct.nixcdn.com/singer/avatar/2018/02/25/e/b/b/b/1519558155015_600.jpg]]></bgimage>
<avatar><![CDATA[https://avatar-nct.nixcdn.com/song/2018/02/26/f/8/3/d/1519640161758.jpg]]></avatar>
<coverimage><![CDATA[https://avatar-nct.nixcdn.com/song/2018/02/26/f/8/3/d/1519640161758_500.jpg]]></coverimage>
<newtab><![CDATA[https://www.nhaccuatui.com/nghe-si-hang-bingboong.html]]></newtab>

Tags: 代码https服务器comsongjpgavatarcdata
2条回答

默认情况下,lxml将删除cdata,不幸的是,parsel.Selectorscray正在使用的并没有公开该选项。在

因此,您需要手动创建lxml树,然后重新创建选择器:

$ scrapy shell "https://www.nhaccuatui.com/flash/xml?html5=true&key1=59f0ae8a89cea4a0eb2c3b7e40208f26"
from lxml.etree import XMLParser
from parsel import Selector

# lets fix selector
parser = XMLParser(strip_cdata=False)
root = etree.fromstring(response.body, parser=parser, base_url=response.url)
selector = Selector(root=root)

# now finding CDATA values
selector.xpath('//lyric/text()').extract()
[OUT]: ['https://lrc-nct.nixcdn.com/2018/02/07/a/a/e/f/1517979335534.lrc']

是否要获取链接('https://lrc-nct.nixcdn.com/2018/02/21/f/b/1/1/1519207822262.lrc')? 可以将xml内容转换为字符串并使用正则表达式提取链接。在

re= re.findall('<lyric><!\[CDATA\[(.*)\]\]></lyric>',XMLstring)

相关问题 更多 >