首页 > 解决方案 > 使用 xpath 解析属性页 URL

问题描述

我正在尝试解析主属性页面https://www.realtyatlas.co.za/search?areas%5B0%5D%5Btown%5D=Bellville&status=For%20Sale,更准确地说,我想从属性中提取 href在这里的课程,并制作以下​​链接:

<div class="col-md-4">
     <a class="property-item__wrap" href="/loevenstein-apartment-for-sale-1917472">

但是,我尝试过的所有组合都没有结果。我也知道 API(https://jf6e1ij07f.execute-api.eu-west-1.amazonaws.com/p/search),但是,在响应中,我没有看到属性的 URL,即那就没用了。我是否遗漏了什么或任何关于我做错了什么的想法?

这是一些代码:

 for prop in response.xpath("//div[@class='col-md-4']"):
...     link = prop.xpath("./a[@class='property-item__wrap']/@href").get()

先感谢您!

标签: javascriptpythonxpathweb-scrapingscrapy

解决方案


正如您已经发现的那样,属性信息来自您提到的 API 调用,而不是直接嵌入到您正在向其发出请求的站点中(因为 javascript 呈现),因此您需要直接从您的 scrapy 请求中调用 API 来获取它信息(这是一个带有某些数据的POST请求,所以你需要自己构建它)

我可能是错的,但看起来这个站点会根据它提供的属性类型动态生成 URL,因此您仍然可以使用来自 API 的数据自己创建 URL:

https://www.realtyatlas.co.za/{suburb}-{propertyType}-{propertyStatus}-{propertyid}

其中以下变量可以替换为来自 API 的变量


推荐阅读