2017-10-13 13 views
2

J'utilise le sélénium pour gratter un site Web et j'ai stocké tous les liens dans a.txt. Maintenant, je souhaite gratter les liens individuels de chacun de ces sites et écrire à b.txt. problème est, mon code n'écrit pas à la seconde et le fichier et je ne sais pas pourquoi. J'imprime les valeurs mises au rebut à la console et cela fonctionne parfaitement bien. Il n'écrit pas dans le fichier b.txtNe pas écrire au fichier en python

Des idées de ce qui pourrait avoir mal tourné? Voici mon code.

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

file1 = 'a.txt' 
file2 = 'b.txt' 
xpath = '//*[@id="jw"]/div[2]/video' 
driver = webdriver.Chrome() 
videos = [] 
j = 0 
so = open(file2, 'w') 
with open(file1, 'r') as fo: 
    for url in fo: 
     driver.get(url) 
     wait = EC.presence_of_element_located((By.XPATH, xpath)) 
     WebDriverWait(driver, 5).until(wait) 
     video = driver.find_element_by_xpath(xpath) 
     link = str(video.get_attribute('src')) 
     so.write(link + '\n') 
     videos.append(link) 
     j += 1 
     print j 
     print link 
     print videos 
so.close() 
+0

ajouter une nouvelle ligne avant 'so.close()' – Thomas

+0

comment une nouvelle aide en ligne? @ user1 – krishna

+0

Eh bien j'ai essayé exactement la même chose dans la console ce que vous avez fait et ... ne me demandez pas pourquoi ... mais ça a fonctionné alors. ¯ \ _ (ツ) _/¯ – Thomas

Répondre

1

Voulez-vous dire que votre code écrit que la première fois (qui ressemble à une faute de frappe dans votre question qui me embrouille un peu), mais si c'est le cas, peut-être vous devez ajouter

open(file1, 'a') 

au lieu de

open(file1, 'r') 
+0

Nah. J'ai écrit un autre code pour collecter les urls dans a.txt. Ceci est la deuxième partie du code, où j'essaie d'utiliser les liens recueillis à partir du premier code dans a.txt pour gratter les pages Web pour obtenir de nouvelles données dans b.txt – krishna