javascript - 使用 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()
先感谢您!
解决方案
正如您已经发现的那样,属性信息来自您提到的 API 调用,而不是直接嵌入到您正在向其发出请求的站点中(因为 javascript 呈现),因此您需要直接从您的 scrapy 请求中调用 API 来获取它信息(这是一个带有某些数据的POST请求,所以你需要自己构建它)
我可能是错的,但看起来这个站点会根据它提供的属性类型动态生成 URL,因此您仍然可以使用来自 API 的数据自己创建 URL:
https://www.realtyatlas.co.za/{suburb}-{propertyType}-{propertyStatus}-{propertyid}
其中以下变量可以替换为来自 API 的变量
推荐阅读
- javascript - 使用 Express 和 MySQL 模块通过 NodeJS 更新记录时出现 SQL 语法错误
- c++ - 在 Visual Studio 2019 中添加 Qt 6.1.2 路径时出现问题
- pyinstaller - importlib.metadata.PackageNotFoundError:使用 pyinstaller 构建 .exe 时的正则表达式
- python - 如何在没有滚动平均值的情况下使用 opencv createBackgroundSubtractorMOG2
- c# - Unity2D 碰撞,if 语句
- c# - 投射 IEnumerable
> 到单个合并的字典 C# - java - Java双循环链表删除
- flutter - Flutter - 在 WebView 中填充 HTML 表单
- kotlin - Firestore Recycler Adapter 未在 Nav 组件片段中填充 recyclerview
- swift - NavigationView高度不规则swiftui