如何通过Scrapy的XPath获取YouTube频道ID并转为Python字符串
提取Scrapy XPath匹配结果为字符串的实现方法
response.xpath()的返回值是Scrapy框架封装的Selector选择器对象列表,不会直接返回匹配到的字符串值,通过选择器内置的提取方法即可拿到目标频道ID字符串。
- 最稳妥的通用写法(全版本Scrapy兼容,匹配不到内容时返回
None,不会触发运行报错):
channel_id = response.xpath('/html/body/meta[@itemprop="channelId"]/@content').extract_first()
运行后channel_id即为字符串类型的频道ID,对应你当前的匹配场景,变量值为UCPeA5h9SwPCV2a0SPlXHgNA。
- 简写写法(Scrapy 2.0及以上版本支持,效果和
extract_first()完全一致):
channel_id = response.xpath('/html/body/meta[@itemprop="channelId"]/@content').get()
注意避坑:不要使用
.extract()[0]的写法,当XPath未匹配到任何内容时,.extract()会返回空列表,此时取索引0会直接抛出IndexError,导致爬虫任务中断。# 不推荐使用,存在报错风险 channel_id = response.xpath('/html/body/meta[@itemprop="channelId"]/@content').extract()[0]
内容的提问来源于stack exchange,提问作者ben mansour mahdi
相关产品推荐
相关产品推荐

