Я получаю неожиданный вывод при экспорте моего словаря в CSV-файл в Python - PullRequest
0 голосов
/ 27 октября 2019

Я брал данные из таблицы через Beautiful-Soup и хочу вставить их вывод в CSV-файл. Предположим, я хочу данные от 1 до 10, но мой CSV-файл показывает только последнее значение, то есть 9-е. И мой заголовок также неоднократно печатается в каждом выводе. Пожалуйста, посмотрите мой код и покажите мне, где я неправ. Однако в моем коде нет ошибок , но он выдает странным образом данные в терминале и печатает только последнее значение данных в CSV-файле. : (

from bs4 import BeautifulSoup
import requests
from pandas import DataFrame


max = 100500
i = 100002
while i < max:
    page = requests.get(
        "https://rajasthanpuc.in/P_test.aspx?Spuc=P379RJ14" + str(i) + "&flag=1")
    i = i + 1

    soup = BeautifulSoup(page.content, 'html.parser')

    num = soup.find(id='Cmobile_lbl').get_text()
    num2 = soup.find(id='Vechno_lbl').get_text()
    num3 = soup.find(id='Pucc_lbl').get_text()
    num4 = soup.find(id='customername_lbl').get_text()
    num5 = soup.find(id='Regyear_lbl').get_text()
    num6 = soup.find(id='vehtype_lbl').get_text()
    num7 = soup.find(id='EngType_lbl').get_text()
    num8 = soup.find(id='Make_lbl').get_text()
    num9 = soup.find(id='Model_lbl').get_text()
    num10 = soup.find(id='Fuel_lbl').get_text()
    num11 = soup.find(id='TestDate_lbl').get_text()
    num12 = soup.find(id='TestTime_lbl').get_text()
    num13 = soup.find(id='validdate_lbl').get_text()
    num16 = soup.find(id='licence_lbl').get_text()
    num17 = soup.find(id='txtResult').get_text()


# print(text)

    df = DataFrame({
        'numbers______': [num],
        'vehicle_no___': [num2],
        'fuel___': [num10],
        'Pucc___': [num3],
        'regn_________': [num5],
        'model________________': [num9],
        'name_________________': [num4]
    })

    print(df)

    df.to_csv(r'C:\Users\intel\Desktop\export_dataframe.csv',
              index=False, encoding='utf-8')

1 Ответ

0 голосов
/ 27 октября 2019

Перемещение print(df) за пределы цикла. Это предотвратит печать заголовка снова и снова.

Наконец, используйте другой режим файла при записи csv в файл. Согласно документам , метод df.to_csv(...) может принимать параметр mode и по умолчанию w.

mode : str

  • Режим записи Python, по умолчанию 'w'.

Так что измените режим на что-то else как a, что откроет файл для добавления без предварительного его усечения.

df.to_csv(r'C:\Users\intel\Desktop\export_dataframe.csv',
          mode='a', index=False, encoding='utf-8')
...