首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python从Sky扫描器中抓取航班和价格数据

python从Sky扫描器中抓取航班和价格数据
EN

Stack Overflow用户
提问于 2018-10-27 20:29:04
回答 1查看 4.5K关注 0票数 2

我正在尝试从下面的url获取价格数据。然而,我似乎只能将文本从‘div’降到一定程度,下面是我的代码:

代码语言:javascript
复制
from selenium import webdriver
from bs4 import BeautifulSoup

def scrape_flight_prices(URL):

    browser = webdriver.PhantomJS()
    # PARSE THE HTML
    browser.get(URL)
    soup = BeautifulSoup(browser.page_source, "lxml")
    page_divs = soup.findAll("div", attrs={'id':'app-root'}) 
    for p in page_divs:
        print(p)

if __name__ == '__main__':
  URL1="https://www.skyscanner.net/transport/flights/brs/gnb/190216/190223/?adults=1&children=0&adultsv2=1&childrenv2=&infants=0&cabinclass=economy&rtn=1&preferdirects=false&outboundaltsenabled=false&inboundaltsenabled=false&ref=home#results"

这是输出:

代码语言:javascript
复制
<div id="app-root">
<section class="day-content state-loading state-no-results" id="daysection">
<div class="day-searching">
<div class="hot-spinner medium"></div>
<div class="day-searching-message">Searching</div>
</div>
</section>
</div>

我想从html中删除的部分如下所示:

代码语言:javascript
复制
https://www.skyscanner.net/transport/flights/brs/gnb/190216/190223/?adults=1&children=0&adultsv2=1&childrenv2=&infants=0&cabinclass=economy&rtn=1&preferdirects=false&outboundaltsenabled=false&inboundaltsenabled=false&ref=home#results

但是,当我尝试使用以下代码时:

代码语言:javascript
复制
prices = soup.findAll("a", attrs={'target':"_blank", "data-e2e":"itinerary-price", "class":"CTASection__price-2bc7h price"})  
for p in prices:
    print(p)

它什么也不印!我怀疑js脚本正在运行什么来生成其余的代码和/或数据?有人能帮我提取数据吗?具体来说,我试图得到的价格,航班时间,航空公司的名称等,但如果美丽汤没有打印相关的html从页面,那么我不知道如何得到它?

希望你能给我指点!事先非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-27 21:19:34

试着在下面的代码中获取价格:

代码语言:javascript
复制
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC

prices = [price.text for price in wait(browser, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "price")))]
print(prices)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53026014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档