Читайте HTML с Beautifulsoup и находите типичные данные

Я уже писал подобный вопрос, но мне нужно что-то другое, что я получил от предыдущего вопроса.

У меня есть HTML-данные, которые написаны ниже (часть данных, где мне нужно).

Я уже получил значение rcpNo, но eleId изменяется с 1 на 33, смещение, длина не имеют регулярного шаблона. Три из данных состоят из цифр, иногда разные цифры.

Мне нужно прочитать rcpNO, eleId, offset, length и dtd.

(dtd фиксируется как 'dart3.xsd', но я пробую это только один html, так что существует вероятность различного значения dtd для разных html-данных. Поэтому я хочу читать из html-данных.)

# This is the part of html
#viewDoc(rcpNo, dcmNo, eleId, offset, length, dtd)


treeNode1.appendChild(treeNode2);

    treeNode2 = new Tree.TreeNode({
        text: "4. The number of stocks",
        id: "7",
        cls: "text",
        listeners: {
            click: function() {viewDoc('20180515000480', '6177478', '7', '59749', '7130', 'dart3.xsd');}
        }
    });
    cnt++;

Подобные данные повторяются, поэтому я пишу некоторую часть HTML:

treeNode2 = new Tree.TreeNode({
        text: "1. Summary information",
        id: "12",
        cls: "text",
        listeners: {
            click: function() {viewDoc('20180515000480', '6177478', '12', '189335', '18247', 'dart3.xsd');}
        }
    });
    cnt++;

    treeNode1.appendChild(treeNode2);

    treeNode2 = new Tree.TreeNode({
        text: "2. Linked finance state",
        id: "13",
        cls: "text",
        listeners: {
            click: function() {viewDoc('20180515000480', '6177478', '13', '207823', '76870', 'dart3.xsd');}
        }
    });
    cnt++;

treeNode1.appendChild(treeNode2);

    treeNode2 = new Tree.TreeNode({
        text: "3. Comment for linked finance state",
        id: "14",
        cls: "text",
        listeners: {
            click: function() {viewDoc('20180515000480', '6177478', '14', '284697', '372938', 'dart3.xsd');}
        }
    });
    cnt++;

Как вы можете видеть выше, текст и идентификатор регулярно меняются. Я хочу прочитать всю информацию о dcmNo, eleId, offset, length и dtd. особенно с типичным идентификатором и текстом.

Я пытался ниже

string = "{viewDoc('20180515000480', '6177478', '6', '58846', '899', 'dart3.xsd');}"
>>> pattern = re.compile(r'viewDoc\(\'\d+\', \'(\d+)\', \'(\d+)\', \'(\d+)\', \'(\d+)\', \'(\d+)\' .+\)', re.MULTILINE | re.DOTALL)

и с Beautifulsoup

>>> soup = BeautifulSoup(html, 'html.parser')
>>> soup.find_all(string = pattern)

и эта команда найти все HTML, я не могу различить данные. Но это не работает, и он находит первый текст из HTML, что мне не нужно читать.

редактировать

Вот как я могу получить HTML от URL

from bs4 import BeautifulSoup
import requests
import re

url = "http://dart.fss.or.kr/api/search.json?auth="+API_KEY \
  +"&crp_cd="+company_code + "&page_set=100" \
  +"&start_dt=19990101&bsn_tp=A001&bsn_tp=A002&bsn_tp=A003"

json_data = requests.get(url).json()
list = json_data['list']

data = pd.DataFrame.from_dict(list)

print(data['rcp_no'][0])

url2 = "http://dart.fss.or.kr/dsaf001/main.do?rcpNo="+data['rcp_no'][0]

temp = requests.get(url2)

html = temp.text

soup = BeautifulSoup(html, "html.parser")

и выше пример HTML является частью печати (суп). Как я уже сказал, в HTML много одинакового формата, и я хочу прочитать типичную строку. Например, если я могу найти ниже строки, то я хочу получить данные

# viewDoc(rcpNo, dcmNo, eleId, offset, length, dtd)

viewDoc('20180515000480', '6177478', '7', '59749', '7130', 'dart3.xsd')

viewDoc('20180515000480', '6177478', '13', '207823', '76870', 'dart3.xsd')

например, ['6177478', '7', '59749', '7130', 'dart3.xsd'], ['6177478', '7', '59749', '7130', 'dart3.xsd'], числовые и текстовые данные (dcmNo, eleId, offset, length и dtd)

0 ответов

Другие вопросы по тегам