Scrapy 通过部分 id 和拆分属性值查找元素

Scrapy find element by part of id and split attribute value

我是 Scrapy 的新手,我正在尝试创建一个 CSS select 或者通过 id 的一部分找到一个元素,并拆分它的 value 属性以获得第 n 项。到目前为止,我一直在使用简单的 selectors,例如:

item['url'] = response.url # get url        
item['address'] = response.css('span.address::text').get().strip() # get address

但是,现在我想 select 这个元素(所有具有 id 以 mger 开头的元素)并在其 value 属性中拆分值:

<input type="hidden" id="mger21110564343" name="mger21110564343" value="21110564343~1~50.37396877,5.90523487~2222GH">

我一直在研究这个页面:https://docs.scrapy.org/en/latest/topics/selectors.html#id1 和 Google 但我仍然不确定如何去做。

通常使用常规 CSS select 或者我会使用 [id^=mger].

我想要的伪代码,从 value 属性获取值 21110564343

response.css("[id^=mger]").attr('value').get().split("~")(0)

您的 css 应该可以工作,但选择器应该如下所示:

selector.css('[id^=mger]::attr(value)').get()

对于 scrapy 你也可以使用 xpath(事实上,css 选择器被翻译成 xpath),所以你也可以使用:

response.xpath('//*[starts-with(@id, "mger")]/@value').get()

如果您没有收到信息,可能意味着这些元素实际上并不存在于响应正文中,您必须先确认一下