如何用Scrapy的CSS选择器获取<data>标签的value属性值?
Scrapy 获取data元素的value属性值
给定目标HTML元素:
<data value="5200" class="text-red-600 font-bold font-arabic undefined"><span class="mr-1">5</span><span class="mr-1">200</span><span class="text-xs font-medium">DT</span></data>
要提取其中value属性的5200,你之前尝试的写法都不对,正确的Scrapy CSS选择器语法是用::attr(属性名)来获取元素属性:
bike.css('data::attr(value)').get()
你之前写法的问题:
bike.css('data::text').get():这是提取<data>标签下的文本内容(也就是页面显示的5200DT),不是目标属性值bike.css('data::value').get():Scrapy CSS选择器没有::value这种语法,属于写法错误bike.css('data').get():只会返回整个<data>元素的HTML代码,无法直接拿到属性值
修改后的完整Scrapy代码:
class BikespiderSpider(scrapy.Spider): name = "bikespider" allowed_domains = ["Domain_here"] start_urls = ["Link_here"] def parse(self, response): bikes = response.css('article.mx-0') for bike in bikes: yield { 'name' : bike.css('h2::text').get(), 'price' : bike.css('data::attr(value)').get() }
内容的提问来源于stack exchange,提问作者Selim
相关产品推荐
相关产品推荐

