You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Scrapy抓取瑞典booli.se:如何跟进房源链接提取房产信息

嘿,我来帮你搞定这个Booli.se的爬虫问题!看起来你已经能抓取列表页内容了,接下来要实现的「跟进房源链接提取详情」在Scrapy里是很常规的操作,用Request对象就能轻松搞定,我给你拆解下具体步骤和代码示例:

实现思路与代码示例

1. 从列表页提取房源详情链接

首先在你的爬虫的parse方法里,先抓取列表页上每个房源的详情URL,然后生成Request对象,把这些URL传进去,同时指定一个回调函数(比如parse_property)来处理详情页的数据。

import scrapy

class BooliSpider(scrapy.Spider):
    name = 'booli'
    # 替换成你要爬取的目标列表页URL
    start_urls = ['https://www.booli.se/sok?locationIds=1770']  

    def parse(self, response):
        # 提取每个房源的详情链接(这里的CSS选择器需要根据页面实际结构调整)
        property_links = response.css('a.property-card__link::attr(href)').getall()  
        for link in property_links:
            # 把相对路径转换成完整URL(如果提取的是相对路径的话)
            full_link = response.urljoin(link)
            # 生成Request,指定回调函数处理详情页
            yield scrapy.Request(full_link, callback=self.parse_property)

        # 可选:添加翻页逻辑,爬取多页列表
        next_page = response.css('a.pagination__next::attr(href)').get()
        if next_page:
            yield scrapy.Request(response.urljoin(next_page), callback=self.parse)

2. 编写详情页数据提取的回调函数

接下来写parse_property方法,这就是你要提取房价、房间数、房龄等属性的地方。注意你原来的代码里有个小笔误:item.ss应该是response.css(在回调函数里我们用详情页的response对象来提取数据)。

def parse_property(self, response):
        # 这里的CSS选择器需要你用浏览器开发者工具(F12)去Booli详情页实际核对
        # 提取房价
        price = response.css('.property-info__price::text').get()
        # 提取房间数
        rooms = response.css('.property-info__rooms::text').get()
        # 提取房龄
        year_built = response.css('.property-info__year-built::text').get()

        # 按照你的需求输出数据
        yield {
            '房价': price.strip() if price else None,
            '房间数': rooms.strip() if rooms else None,
            '房龄': year_built.strip() if year_built else None
            # 可以继续添加其他你需要的属性
        }

关键注意事项

  • CSS选择器要准确:Booli的页面结构可能会更新,你一定要用浏览器开发者工具去检查详情页里各个元素的实际CSS路径,替换示例里的占位选择器。
  • 处理相对路径:如果提取的房源链接是相对路径(比如/bostad/123456),必须用response.urljoin(link)转换成完整URL,不然Scrapy无法正确请求。
  • 数据清洗:提取到的文本可能带有多余空格、换行或特殊符号,用strip()可以快速清理;如果需要更复杂的处理,比如提取纯数字房价,可以用正则表达式。
  • 翻页逻辑:如果要爬取多页房源,别忘了添加示例里的翻页代码,让爬虫自动遍历所有列表页。

调试小技巧

你可以用scrapy shell快速测试选择器:在命令行输入scrapy shell https://www.booli.se/bostad/xxxxxx(替换成真实的详情页URL),然后在shell里输入response.css('你的选择器').get(),就能实时验证选择器是否能拿到正确数据。

这样就能实现你想要的逻辑:遍历列表页的所有房源链接,跟进后提取指定属性,最后输出结构化数据啦!

内容的提问来源于stack exchange,提问作者ghostfkrcb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:30:41