【问题标题】:Create a CSV to save the result of web-scraping创建 CSV 以保存网络抓取的结果
【发布时间】:2021-09-02 18:38:56
【问题描述】:

我正在从下面代码中指示的一些链接中抓取信息。

我想将所有数据保存在一个唯一的 CSV 文件中。

我认为我的代码有问题,事实上,当我打印 detail_flights(或者我尝试将它们插入 CSV 文件中)时,我只获得了最后一个链接抓取的结果。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import pprint

list_link = ['https://www.kayak.it/flights/MIL-BCN/2021-09-05/2021-09-06/?sort=bestflight__a&fs=stops=0', 'https://www.kayak.it/flights/MIL-PAR/2021-09-05/2021-09-06/?sort=bestflight__a&fs=stops=0', 'https://www.kayak.it/flights/MIL-ROM/2021-09-05/2021-09-06/?sort=bestflight__a&fs=stops=0']

wd = webdriver.Chrome('chromedriver',chrome_options = chrome_options)
wd.maximize_window()
wd.implicitly_wait(50)
#driver.get("https://account.battle.net/creation/flow/creation-full")
wait = WebDriverWait(wd, 20)

detail_flights = []

for link in list_link:
  wd.get(link)
  try:
    wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[title='Accetta']"))).click()
  except:
    pass

  try:
    wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[id='onetrust-accept-btn-handler']"))).click()
  except:
    pass

  
j = 0
lngth = len(wd.find_elements_by_css_selector(".mainInfo"))
for i in range(lngth):
    try:
        if len(wd.find_elements_by_css_selector(".mainInfo")) > 0:
            elements = wd.find_elements_by_css_selector(".mainInfo")
            wd.execute_script("arguments[0].scrollIntoView(true);", elements[j])
            #print(elements[j].get_attribute('innerText'))
            j = j + 1

            date = link.replace('https://www.kayak.it/flights/', '')
            data_partenza = date[8:18]
            data_ritorno = date[19:29]
            
            detail_flights.append({elements[j].get_attribute('innerText'), data_partenza, data_ritorno})

            print(detail_flights)
        else:
            print('Nothing more to scrape')
    except:
        pass

这是输出 - 我只想获得输出的最后一行,而不是所有重复的行。而且我想为每个抓取的链接获取一行。

 [{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}]
    [{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}]
    [{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}]
    [{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}]
    [{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'2021-09-06', '2021-09-05', '19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}]
    [{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'2021-09-06', '2021-09-05', '19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}]
    [{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'2021-09-06', '2021-09-05', '19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n22:00 – 23:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}]
    [{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'2021-09-06', '2021-09-05', '19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n22:00 – 23:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}]
    [{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'2021-09-06', '2021-09-05', '19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n22:00 – 23:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n17:30 – 18:40\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}]
    [{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'2021-09-06', '2021-09-05', '19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n22:00 – 23:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n17:30 – 18:40\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n19:00 – 20:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-06'}]
    [{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'2021-09-06', '2021-09-05', '19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n22:00 – 23:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n17:30 – 18:40\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n19:00 – 20:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-06'}, {'12:00 – 13:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}]
    [{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'2021-09-06', '2021-09-05', '19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n22:00 – 23:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n17:30 – 18:40\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n19:00 – 20:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-06'}, {'12:00 – 13:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n17:30 – 18:40\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}]
    [{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'2021-09-06', '2021-09-05', '19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n22:00 – 23:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n17:30 – 18:40\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n19:00 – 20:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-06'}, {'12:00 – 13:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n17:30 – 18:40\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'12:00 – 13:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}]
    [{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'2021-09-06', '2021-09-05', '19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n22:00 – 23:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n17:30 – 18:40\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n19:00 – 20:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-06'}, {'12:00 – 13:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n17:30 – 18:40\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'12:00 – 13:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}]

当我尝试在不同的代码单元格中打印 detail_flights 时,我得到了这个:

[{'13:10 – 20:03\nMIL Centrale\n‐\nROM Termini\n0 cambi\n6h 53m\n13:57 – 20:40\nROM Termini\n‐\nMIL Centrale\n0 cambi\n6h 43m', '2021-09-05', '2021-09-06'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'2021-09-06', '2021-09-05', '19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'9:30 – 10:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n11:00 – 12:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n22:00 – 23:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'15:00 – 16:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n17:30 – 18:40\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n19:00 – 20:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-06'}, {'12:00 – 13:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'2021-09-06', '2021-09-05', '7:00 – 8:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n17:30 – 18:40\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m'}, {'12:00 – 13:10\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n15:00 – 16:10\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}, {'19:30 – 20:40\nLIN Aeroporto Milano Linate\n‐\nFCO Roma-Fiumicino\ndiretto\n1h 10m\n13:40 – 14:50\nFCO Roma-Fiumicino\n‐\nLIN Aeroporto Milano Linate\ndiretto\n1h 10m', '2021-09-05', '2021-09-06'}]

  

【问题讨论】:

    标签: python csv web-scraping css-selectors


    【解决方案1】:

    要从所有链接中获取数据,所有代码都必须在 for 循环中:

    for link in list_link:
      wd.get(link)
      ....
    

    这部分代码:

    j = 0
    lngth = len(wd.find_elements_by_css_selector(".mainInfo"))
    ....
    

    只使用最后一个链接。

    另外,我建议您使用 webdriver_manager 并永远忘记处理 chromedriver 文件。

    这是您的代码的编辑版本(稍微简化了一点),它使用 webdriver_manager

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    import pprint
    from selenium import webdriver
    from webdriver_manager.chrome import ChromeDriverManager
    
    list_link = ['https://www.kayak.it/flights/MIL-BCN/2021-09-05/2021-09-06/?sort=bestflight__a&fs=stops=0',
                 'https://www.kayak.it/flights/MIL-PAR/2021-09-05/2021-09-06/?sort=bestflight__a&fs=stops=0',
                 'https://www.kayak.it/flights/MIL-ROM/2021-09-05/2021-09-06/?sort=bestflight__a&fs=stops=0']
    
    wd = webdriver.Chrome(ChromeDriverManager().install())
    wd.maximize_window()
    wd.implicitly_wait(5)
    wait = WebDriverWait(wd, 5)
    
    detail_flights = []
    
    for link in list_link:
        wd.get(link)
        try:
            wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[title='Accetta']"))).click()
        except:
            pass
    
        try:
            wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[id='onetrust-accept-btn-handler']"))).click()
        except:
            pass
        try:
            if len(wd.find_elements_by_css_selector(".mainInfo")) > 0:
                elements = wd.find_elements_by_css_selector(".mainInfo")
                for element in elements:
                    wd.execute_script("arguments[0].scrollIntoView(true);", element)
                    date = link.replace('https://www.kayak.it/flights/', '')
                    data_partenza = date[8:18]
                    data_ritorno = date[19:29]
                    detail_flights.append({element.get_attribute('innerText'), data_partenza, data_ritorno})
            else:
                print('Nothing more to scrape')
        except:
            pass
    
    for flight in detail_flights:
        print(flight)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 2016-03-02
      • 1970-01-01
      • 2017-09-24
      • 2019-02-26
      相关资源
      最近更新 更多