gpt4 book ai didi

python - 如何使用Scrapy从响应中获取XML标签中的注释?

转载 作者:行者123 更新时间:2023-12-01 01:57:50 25 4
gpt4 key购买 nike

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

<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>

最佳答案

默认情况下,lxml 会删除 cdata,不幸的是 scrapy 使用的 parsel.Selector 不会公开该选项。

因此您需要手动创建 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']

关于python - 如何使用Scrapy从响应中获取XML标签中的注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49969284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com