如何解析aviasales.com

时间:2018-02-24 16:36:12

标签: python web-scraping

我想从机票聚合器中收集10个最优价格 - http://www.aviasales.com

例如,我们会找到10个最便宜的价格8月6日莫斯科 - 巴塞罗那航班。具体的URL是http://www.aviasales.com/flights/MOW0608BCN1。 如您所知,任何聚合器花费几秒钟执行搜索,然后显示最便宜的优惠。因此,问题在于,我可以在页面开始加载的初始点抓取的数据没有所需的信息。页面开始下载后仅显示30秒。

根据我的观点,解决问题的最简单方法是某种计时器。但我的代码中的剪贴板再次打开页面,从零开始。因此,无需价格即可收集数据。在这种情况下我该怎么办?

我附上我的代码(第一个最优惠的价格):

import requests, bs4
import time
import webbrowser
webbrowser.open('http://www.aviasales.com/flights/MOW0608BCN1')
time.sleep(30)
url=requests.get('http://www.aviasales.com/flights/MOW0608BCN1')
b=bs4.BeautifulSoup(url.text, "html.parser")
price_string=b.select('currency_font currency_font-usd')
price=price_string[0].getText()
print(price)

所需数据编号: https://www.photobox.co.uk/my/photo?album_id=5263636965&photo_id=500604214523

1 个答案:

答案 0 :(得分:0)

解析网站从长远来看,这不是一个可靠的解决方案,例如可以在下一个版本中更改页面的HTML标记。

您可以使用API​​(http://www.aviasales.ru/API)获取所需信息。

如果由于某种原因想要实现解析。我建议查看Selenium和PhantomJS(或其他无头浏览器)。等待命令(http://selenium-python.readthedocs.io/waits.html)将帮助您检测页面上CSS类的存在。