Импорт данных из интернета в Python - проблема с датафреймом - PullRequest
0 голосов
/ 22 мая 2019

Мне нужно взять цены на рейсы с одного сайта, но у меня есть некоторые проблемы с фреймом.

import pandas as pd
import io
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

city1 = ['Belém', 'Belo Horizonte', 'Campo Grande', 'Curitiba', 'Brasília', 'Fortaleza', 'Goiânia', 'Porto Alegre']
city1cod = ['BEL.', 'CNF.', 'CGR.', 'CWB.', 'BSB.', 'FOR.', 'GYN.', 'POA.']

city2 = ['Rio de Janeiro', 'Florianópolis', 'Curitiba', 'São Paulo', 'Salvador', 'Natal', 'Goiânia', 'Fortaleza']
city2cod = ['/m/06gmr.', 'FLN.', 'CWB.', '/m/022pfm.', 'SSA.', 'NAT.', 'GYN.', 'FOR.']

date = ('2019-07-20*', '2019-07-28')


urls = [] 

for c1 in city1cod:
    for c2 in city2cod:

      if c1 != c2:

           url1 = 'https://www.xxxddd.com/voos=' + c1 + c2 + date[0] + c2 + c1 + date[1] + ';c:USD;e:1;sd:1;t:f'
            urls.append(url1)


def scrape (url) : 

    options = Options()

    driver = 
webdriver.Chrome(r'J:\Bi\Python\chromedriver_win329\chromedriver.exe', chrome_options=options) 
    driver.implicitly_wait(100)

    driver.get(str(url))

    driver.set_script_timeout(10000)
    driver.implicitly_wait(300)


     list = []

    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, 'gws-flights-results__times-row')))


   for a in driver.find_elements_by_class_name(r'gws-flights-results__times-row'):
        a = a.text
        driver.implicitly_wait(20)
        list.append(a)
        driver.implicitly_wait(20)

    df1 =  pd.DataFrame({'Hora': list})

    list = []
    for a in driver.find_elements_by_class_name(r'gws-flights-results__airports'):
        driver.implicitly_wait(20)
        a = a.text
        list.append(a)

    df2 = pd.DataFrame({'Trajeto': list})    


    df = pd.concat([df1, df2, df3, df4, df5], axis='columns')


  driver.close()

    return df

dffinal = pd.DataFrame([])

contagem = 0
for url1 in urls :
    try:
        df3 = scrape(url1)
        dffinal = pd.concat([dffinal, df3])
        contagem += 1
        print(int(contagem/122*100) + "% pronto!")
    except:
        pass

dffinal = dffinal.reset_index(drop=True)
print(dffinal)


writer = pd.ExcelWriter('J:/Eco/Passagens/outpassagens1.xlsx')
dffinal.to_excel(writer, 'Sheet1')
writer.save()

Когда я делаю это, у меня возникает проблема с пустым массивом данных:

J: /Eco/database/Bianca/Base/coleta_passagens.py: 50: Предупреждение об устаревании: использование параметры вместо драйвера chrome_options = webdriver.Chrome (r'J: \ Bi \ Python \ chromedriver_win329 \ chromedriver.exe ', chrome_options = параметры, chrome_options = options) Пустые столбцы DataFrame: [] Индекс: []

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...