Парсер не сохраняет результат в CSV - Python
Формулировка задачи:
Написал простенький парсер для сайта invest***.com, для экономического календаря.
Проблема в том, что в файл сохраняется только 35 строка, а 36-ая уже игнорируется, не могу понять почему.
Я что-то не так делаю?
Решение задачи: «Парсер не сохраняет результат в CSV»
textual
Листинг программы
# -*- coding: utf-8 -*-
import csv
import urllib.request
from bs4 import BeautifulSoup
BASE_URL = 'https://ru.investing.com/economic-calendar/'
REQ = urllib.request.Request(BASE_URL, headers={'User-Agent': "Magic Browser"})
def get_html():
response = urllib.request.urlopen(REQ)
return response.read()
def parse(html):
soup = BeautifulSoup(html, "html.parser")
table = soup.find('table', class_='genTbl closedTbl ecoCalTbl persistArea')
rows = table.findAll('tr', id=lambda i: i and i.startswith('eventRowId_'))
projects = []
for row in rows:
projects.append({
'Time': row.find('td', class_='first').text,
'Valute': row.find('td', class_='flagCur').text.strip(),
'Volatile': row.find('td', class_='sentiment').get('title') or row.find('td', class_='sentiment').text,
'Title': row.find('td', class_='event').text.strip()
})
return projects
def save(projects, path):
with open(path, 'w') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=['Time', 'Valute', 'Volatile', 'Title'])
writer.writeheader()
writer.writerows(projects)
def main():
projects = parse(get_html())
save(projects, 'projects.csv')
if __name__ == '__main__':
main()