0

Je récupère les URL d'un fichier txt et les exporte dans un fichier CSV. Mais après tout le processus, mon code n'écrit que les informations de la dernière URL. Ma conjecture est que j'oublie une boucle. Mais où? Voici mon code:Pandas écrit uniquement la dernière ligne d'un fichier CSV

import requests 
from bs4 import BeautifulSoup 
import pandas as pd 
from urllib import urlopen 

file = open('urls.txt', 'r') 
filelines = (line.strip() for line in file) 
for code in filelines: 
    site = urlopen(code) 
    soup = BeautifulSoup(site, "html.parser") 
    final = soup.find_all("span", {"class": "bd js-title-main-info"}) 
    print final 

records = [] 
for pagetxt in final: 
    print pagetxt.text 
    records.append((pagetxt.text)) 
df = pd.DataFrame(records, columns=['product name']) 
df.to_csv('test.csv', index=False, encoding='utf-8') 

Merci

Répondre

1

Lorsque vous obtenez des données de fichier que vous ne garder que la dernière valeur dans la variable final. Essayez d'ajouter des données plus tôt (j'ai marqué les changements avec #####):

import requests 
from bs4 import BeautifulSoup 
import pandas as pd 
from urllib import urlopen 

file = open('urls.txt', 'r') 
filelines = (line.strip() for line in file) 
records = []       ###### 
for code in filelines: 
    site = urlopen(code) 
    soup = BeautifulSoup(site, "html.parser") 
    final = soup.find_all("span", {"class": "bd js-title-main-info"}) 
    print final 

    for pagetxt in final:    ###### 
     print pagetxt.text    ###### 
     records.append((pagetxt.text)) ###### 

df = pd.DataFrame(records, columns=['product name']) 
df.to_csv('test.csv', index=False, encoding='utf-8') 
+1

Oui, cela a fonctionné! Merci! – Jodmoreira