Как преобразовать список в значения заголовков столбцов и заполнить его данными? - PullRequest
0 голосов
/ 11 октября 2019

Я получаю информацию с веб-сайта, анализирую ее с помощью запросов HTTP POST, а затем вручную создаю имена заголовков столбцов. Основная проблема заключается в том, что я не могу заполнить значения в столбцах

import requests
from bs4 import BeautifulSoup
import pandas as pd
import xlsxwriter

request_headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,'
              'application/signed-exchange;v=b3',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'en,en-GB;q=0.9',
    'Cache-Control': 'max-age=0',
    'Connection': 'keep-alive',
    'Content-Length': '39',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Cookie': 'JSESSIONID=CB1FBCAD1E0A6B89CBBA959FF001B7FC; ETAXES=etaxes; JSESSIONID=0CB3B2A0B873D9308A0B5D2C8CB88EA4',
    'Host': 'www.e-taxes.gov.az',
    'Origin': 'https://www.e-taxes.gov.az',
    'Referer': 'https://www.e-taxes.gov.az/ebyn/commersialChecker.jsp',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                  'Chrome/75.0.3770.142 Safari/537.36',
}

voens = [1302932691,
         1701579951,
         ]

form_data = {
    'name': voens,
    'tip': '2',
    'submit': 'Yoxla',
}

url = 'https://www.e-taxes.gov.az/ebyn/commersialChecker.jsp'


response = requests.post(url, data=form_data, headers=request_headers)
s = BeautifulSoup(response.content, 'lxml')
sHeader = s.findAll('table', {'class': 'com'})[0].findAll('tr', recursive=False)[1]
headers = [sHeader.get_text().strip()]
print(headers)

for voen in voens:
    form_data['name'] = voen
    response = requests.post(url, data=form_data, headers=request_headers)
    s = BeautifulSoup(response.content, 'lxml')
    sContent = s.find('tr', {'class': 'style1'})
    outcome = [sContent.get_text().strip()]
    print(outcome)
print(type(outcome))

pandaHeaders = pd.DataFrame({'Kommersiya qurumunun adı': headers[0],
                             'VÖEN': headers[0],
                             'Vergi uçotu orqanının adı': headers[0],
                             'Təşkilati-hüquqi forması': headers[0],
                             'Hüquqi ünvanı': headers[0],
                             'Nizamnamə kapitalı': headers[0],
                             'Qanuni təmsilçi': headers[0],
                             'Dövlət qeydiyyatına alındığı tarix': headers[0],
                             'Reyestr məlumatlarına son dəyişiklik tarixi': headers[0],
                             })
writer = pd.ExcelWriter("informationTaxIDs.xlsx", engine="xlsxwriter")
pandaHeaders.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']

header_format = workbook.add_format({
    'bold': True,
    'text_wrap': False,
    'valign': 'top',
    'fg_color': '#D7E4BC',
    'border': 1})

for col_num, value in enumerate(pandaHeaders.columns.values):
    worksheet.write(0, col_num + 1, value, header_format)

writer.save()

. Я ожидаю, что файл excel содержит вывод переменной output, но он возвращает сообщение об ошибке 'VÖEN': outcome[1], IndexError: list index out of range, как это.

Я думаю, что проблема в том, что вывод переменной output представляет собой список с одним индексом, но его значение равно \n, так что это означает, что существует один индекс. Как я могу разделить список вывода на индексы? тогда по этим индексам заголовки файла excel получают каждую переменную

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...