Python 如何在请求中获得深度嵌套的类

Python 如何在请求中获得深度嵌套的类,python,html,nested,python-requests,Python,Html,Nested,Python Requests,我有一个使用请求获取html的脚本,如下所示: r=会话。gethttps://www.instacart.com/store/wegmans/search_v3/horizon%201%25,headers=headers 嵌套深度,网页大约有26层深,是下面的元素$5.59,我想刮一下。接下来的两个元素是和,所以我的第一个想法是如果我能找到item price类,我可以再往下走两层,我尝试了以下代码: tree = html.fromstring(r.content) result = tr

我有一个使用请求获取html的脚本,如下所示: r=会话。gethttps://www.instacart.com/store/wegmans/search_v3/horizon%201%25,headers=headers

嵌套深度,网页大约有26层深,是下面的元素$5.59,我想刮一下。接下来的两个元素是和,所以我的第一个想法是如果我能找到item price类,我可以再往下走两层,我尝试了以下代码:

tree = html.fromstring(r.content)
result = tree.xpath("//div[@class='item-price']")
但当我打印结果时,它只显示一个空列表。我已经尝试了许多其他方法,我的理论是,我使用xpath的方式并不比第一层元素更深,因为在我指定body//div//etc的地方使用目标xpath是可行的


是否有一种方法可以循环遍历其中的所有元素来查找item price类,或者有更好的方法来执行此操作?

Instacart的页面是动态生成的,请求不执行javascript。该项列表在初始页面加载中不存在,只是在之后通过javascript和ajax添加。您可以通过在页面上单击鼠标右键并选择“查看源”来检查这一点

实际数据是从另一个动态生成的url加载的,该url类似于:

https://www.instacart.com/v3/retailers/42/module_data/dynamic_item_lists/delivery_promotion?list_ref=unilevermainstream0719&origin_source_type=department&scores=&tracking.page_view_id=7f55bb7a-00bf-4fa8-ac48-fd9e0f10cc59&source=web&cache_key=f90e09-7286-f-5bb&per=30

所以解决方案是使用selenium或其他东西来运行javascript,然后在加载后将其删除?或者你是在建议我可以在请求中使用生成的url?尝试构建自己的url可能会比实际情况复杂得多。似乎有很多部分都以某种方式与您的会话相关联,因此需要进行一些反向工程。使用类似硒的东西可能是更快获得结果的一种方法。