【问题标题】:Scrapy find element by part of id and split attribute value通过部分 id 和拆分属性值 Scrapy 查找元素
【发布时间】:2020-12-17 05:40:31
【问题描述】:

我是 Scrapy 的新手,正在尝试创建一个 CSS 选择器,该选择器通过部分 id 查找元素,并拆分其 value 属性以获取第 n 个项目。到目前为止,我一直在使用简单的选择器,例如:

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

但是,现在我想选择这个元素(所有 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 选择器[id^=mger]

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

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

【问题讨论】:

    标签: scrapy css-selectors


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      相关资源
      最近更新 更多