为什么Scrapy爬虫无法返回任何链接?房源网站爬取CSS选择器问题咨询
问题原因排查
你当前写的CSS选择器和页面实际结构不匹配,是无法获取到数据的核心原因,和是否添加上层main节点定位没有直接关联:
你写的选择器中ul.apartment-search-ad-list是用类名匹配ul元素,但你提供的页面结构里,apartment-search-ad-list是ul的id属性值,ul的类名只有ad-list,类名匹配自然找不到对应元素。
修复方案
你可以直接用id选择器定位元素,id本身在页面中具备唯一性,不需要额外添加上层main节点层级就能精准匹配,修改后的选择器参考如下:
div#apartment-search-hits > ul#apartment-search-ad-list > li.ad-list__item > a::attr(href)
如果偏好使用类名匹配,也可以把ul的匹配规则改成ul.ad-list。
关于是否添加上层main节点定位的说明
如果你的爬虫后续需要适配页面结构更新,担心页面出现重名的类或id,可以添加上层main节点的定位来提升选择器的优先级,调整后的写法参考:
main#main-content div#apartment-search-hits > ul#apartment-search-ad-list > li.ad-list__item > a::attr(href)
额外注意点
Scrapy的CSS选择器取属性时,attr内部不需要加引号,直接写::attr(href)即可,部分旧版本Scrapy识别带引号的写法会抛出匹配异常。
内容的提问来源于stack exchange,提问作者Mr K
相关产品推荐
相关产品推荐

