Парсер не сохраняет результат в 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()

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5