@san_m_m

Как преобразовать данные в таблицу DataFrame?

Добрый день!

Есть код

import requests
import re



otoids = [11135, 11125]

for otoid in otoids:

    s = requests.Session()

    r = s.get('http://oto-register.autoins.ru/oto/index.xhtml')
    cdata = re.search(r'id="j_id1:javax.faces.ViewState:0" value="(.+?)"', r.text).group(1).strip()

    data = {
        'javax.faces.partial.ajax': 'true',
        'javax.faces.source': 'mainForm:remoteCommandSetupOtoId_action',
        'javax.faces.partial.execute': 'mainForm:remoteCommandSetupOtoId_action',
        'javax.faces.partial.render': 'mainForm:contentTabsPanel mainForm:otoPanel',
        'mainForm:remoteCommandSetupOtoId_action': 'mainForm:remoteCommandSetupOtoId_action',
        'otoId': otoid,
        'mainForm': 'mainForm',
        'mainForm:j_idt8': otoid,
        'mainForm:j_idt9': '',
        'mainForm:j_idt10': '',
        'mainForm:j_idt11': '',
        'javax.faces.ViewState': cdata,
    }

    headers = {
        'X-Requested-With': 'XMLHttpRequest',
        'Faces-Request': 'partial/ajax',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
    }


    r = s.post('http://oto-register.autoins.ru/oto/index.xhtml', data=data, headers=headers)

    ogrn = re.search(r'ОГРН/ОГРНИП</div>\n.+<p>(.+?)</p>', r.text).group(1)

    print('ID:', otoid, 'ОГРНП:', ogrn)


Как можно сделать датафрейм со столбцами ID и ОГРН?
Предлагали использовать модуль io, но что-то мне подсказывает, что это не оптимальный способ
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
YuriyVorobyov1333
@YuriyVorobyov1333
Software Developer
Используйте Pandas. Преобразуйте вашу структуру в объект, а его уже в Dataframe:
import pandas as pd

my_dict = { 'ID': otoid, 'ОГРНП': ogrn }

df = pd.DataFrame(data = my_dict)


upd:
полное решение, чтобы не читать всю вереницу комментариев:
import requests
import re
import pandas as pd

orgns = []

otoids = [11135, 11125]

for otoid in otoids:

    s = requests.Session()

    r = s.get('http://oto-register.autoins.ru/oto/index.xhtml')
    cdata = re.search(r'id="j_id1:javax.faces.ViewState:0" value="(.+?)"', r.text).group(1).strip()

    data = {
        'javax.faces.partial.ajax': 'true',
        'javax.faces.source': 'mainForm:remoteCommandSetupOtoId_action',
        'javax.faces.partial.execute': 'mainForm:remoteCommandSetupOtoId_action',
        'javax.faces.partial.render': 'mainForm:contentTabsPanel mainForm:otoPanel',
        'mainForm:remoteCommandSetupOtoId_action': 'mainForm:remoteCommandSetupOtoId_action',
        'otoId': otoid,
        'mainForm': 'mainForm',
        'mainForm:j_idt8': otoid,
        'mainForm:j_idt9': '',
        'mainForm:j_idt10': '',
        'mainForm:j_idt11': '',
        'javax.faces.ViewState': cdata,
    }

    headers = {
        'X-Requested-With': 'XMLHttpRequest',
        'Faces-Request': 'partial/ajax',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
    }


    r = s.post('http://oto-register.autoins.ru/oto/index.xhtml', data=data, headers=headers)
    
    
    ogrn = re.search(r'ОГРН/ОГРНИП</div>\n.+<p>(.+?)</p>', r.text)

    if ogrn != None:
        ogrn = ogrn.group(1)
    else:
        ogrn = 'None'

    orgns.append(ogrn)

my_dict = { 'ID': otoids, 'ОГРНП': orgns }

df = pd.DataFrame(data = my_dict)
    
print(df)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы