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()
如果您没有收到信息,可能意味着这些元素实际上并不存在于响应正文中,您必须先确认一下
我是 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()
如果您没有收到信息,可能意味着这些元素实际上并不存在于响应正文中,您必须先确认一下