【发布时间】:2019-05-21 20:50:07
【问题描述】:
我使用以下代码从“最便宜”选项卡中获取票价。但是,结果我只得到“[]”。
有人可以验证我的代码和 XPath 是否正确吗?我尝试使用相对 ("//span[@class='title price']") 和绝对 XPath。另外,我应该注意,我使用的是在使用“请求”之前先呈现页面的服务。渲染应该不是问题。
page = requests.get('https://www.momondo.com/flight-search/PHL-VCE/2019-06-19-flexible/2019-06-25-flexible?sort=price_a')
sleep(5)
tree = html.fromstring(page.content)
price = tree.xpath('/html[1]/body[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[3]/div[1]/div[2]/div[1]/div[2]/div[4]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/a[1]/div[1]/div[2]/span[1]')
print(price)
【问题讨论】:
-
您确定页面已完全加载吗?
-
根据服务,渲染正在工作。除了渲染的潜在问题之外,代码和 XPath 对您来说是否正确?
-
我没有看到
Cheapest节点加载到树中,因为page.content没有提取航班信息。这就是您将[]作为输出的原因。 -
你能根据服务澄清你的意思吗?此页面动态加载,您发送的请求将仅返回带有页面“骨架”的响应,并且价格将动态加载(尝试使用 selenium 或 scrapy with splash)。加载页面后,您必须抓取表格中的所有元素。
-
你能帮我修复代码吗?我只需要更新 XPath 吗?应该是什么?
标签: python xpath web-scraping python-requests