Je veux extraire un grand nombre de pages d'un site Web d'API, je dois donc attendre pour charger les éléments et après que mon script puisse cliquer dessus. Mais le time.sleep (5) ne fonctionne pas, car il saute instinctivement à la page suivante.Pourquoi ne pas travailler mon code time.sleep (x) en python sur debian?
De quoi ai-je tort?
Mon code:
def scrape(urls):
browser = webdriver.Firefox()
datatable=[]
for url in urls:
browser.get(url)
time.sleep(5)
driver.find_element_by_xpath('//button[contains(text(), "Load earlier flights")]').click()
time.sleep(5)
html = browser.page_source
soup=BeautifulSoup(html,"html.parser")
table = soup.find('table', { "class" : "table table-condensed table-hover data-table m-n-t-15" })
soup2=BeautifulSoup(html,"html.parser")
name = soup2.h2.string
soup3=BeautifulSoup(html,"html.parser")
name2 = soup3.h1.string
soup4=BeautifulSoup(html,"html.parser")
name3 = soup4.h3.string
name4 = datetime.now()
for record in table.find_all('tr', class_="hidden-xs hidden-sm ng-scope"):
temp_data = []
temp_data.append(name4)
temp_data.append(name)
temp_data.append(name2)
temp_data.append(name3)
for data in record.find_all("td"):
temp_data.append(data.text.encode('latin-1'))
newlist = filter(None, temp_data)
datatable.append(newlist)
time.sleep(10)
browser.close()
return datatable
La première URL: flightradar24.com/data/airports/ams/arrivals~~V~~singular~~3rd
pourquoi ne vous créez ** 4 ** soupes ayant le même contenu (indice, vous ne devez pas!) –
En se fondant sur 'time.sleep()' d'attendre une page à complètement chargé est fragile au mieux. Vous voudrez peut-être vérifier s'il y a une meilleure solution dans le sélénium ... –
Je sais qu'il y a une meilleure solution comme les éléments d'attente, etc, mais je suis intéressé par cela pourquoi time.sleep() ne fonctionne pas dans mon code. –