#python #python-3.x #list #csv
#python #python-3.x #Список #csv
Вопрос:
Я создал скребок для получения информации с веб-сайта с помощью цикла for и создал список с каждым циклом. Результат — это то, что я ожидал, но мне трудно полностью поместить эту информацию в файл csv. Я намерен создать 4 строки, в которых будут совпадать соответствующие URL, местоположение и т. Д., Но, возможно, способ, которым я устанавливаю свои циклы, усложняет задачу?
Я думал, что следующий синтаксис поможет, но нет. Он печатает только все URL-адреса в одной строке. Я должен был распечатать всю информацию, но они все еще были в одной строке.
with open('trademe.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['URL', 'Price', 'Location', 'Flatmates'])
writer.writerow([link, price, loc, mates])
Кстати, это код до сих пор;
trademe = urlopen(url)
trademe_html = soup(trademe.read(), "html.parser")
trademe.close()
link=[]
for i in trademe_html.find_all('div', attrs={'class' : 'dotted'}):
link.append('URL: www.trademe.co.nz' i.a['href'])
print('URL: www.trademe.co.nz' i.a['href'])
price=[]
for i in trademe_html.find_all('div', attrs={'class' : 'flatmates-list-view-card-price'}):
price.append('Price and availability: ' i.text.strip())
print('Price and availability: ' i.text)
loc=[]
for i in trademe_html.find_all('div', attrs={'class' : 'flatmates-card-subtitle'}):
loc.append('Location: ' i.text)
print('Location: ' i.text)
mates=[]
for i in trademe_html.find_all('div', attrs={'class' : 'flatmates-card-existing-flatmates'}):
mates.append(i.text.strip())
print(i.text)
Комментарии:
1. Добро пожаловать в SO. Вы установили для новой строки значение
''
. Разве это не должно бытьn
?2. привет, @ewong, спасибо! Я забыл упомянуть, что я пытался установить новую строку =’n’, и это не сработало. Я попытался добавить n в конце моего цикла, и это сработает, если я напечатаю его внутри своей IDE. Однако он каким-то образом не работает с файлом csv.
Ответ №1:
- Вставьте свои данные в
pandas
DataFrame
- Используйте
to_csv
функцию вpandas
Pandas позволяет очень легко экспортировать фрейм данных в csv с заголовками
Комментарии:
1. привет @topgunner, спасибо, что ответили на мой вопрос! Я использовал pandas dataframe, но я все еще не могу получить желаемый результат. Следующий код записывает всю информацию в соответствующий заголовок, но в целом в одну и ту же строку fields = [‘URL’, ‘Price’, ‘Location’, ‘Flatmates’] rows = [link, price, loc, mates], с открытым (‘agalu.csv’, ‘w’, новая строка=’n’) как csv_file: csvwriter = csv.writer(csv_file) csvwriter.writerow(поля) csvwriter.writerows(строки)