如何在函数zip或JSON中写下所有答案



我有来自站点的响应。我想用json或zip写它。但是我不知道该怎么做。我应该写什么?

import requests
from bs4 import BeautifulSoup as bs
import json
from pprint import pprint

def get_html(url):
    r = requests.get(url)
    return r.text


def get_data(html):
    soup = bs(html, 'lxml')
    trs = soup.find('table', {'style':'padding-top:10px;'})
    for rows in trs.find_all('tr'):
        pairs = rows.find_all('a')
        for pair in pairs:
            for elem in pair:
                print(elem)


def main():
    groups = {
        'T-691': 'https://kbp.by/rasp/timetable/view_beta_tbp/?cat=group&id=26',
        'Т-717': 'https://kbp.by/rasp/timetable/view_beta_tbp/?cat=group&id=62'
    }
    group = input()
    url = 'https://kbp.by/rasp/timetable/view_beta_tbp/?cat=group&id={}'.format(groups[group])
    print(get_data(get_html(url)))

if __name__ == '__main__':
    main()

我希望这个答案如此

('item':'name','组号':'name'(等。

您首先需要以所需的格式创建词典列表。我假设每个单元格需要每4个值,因为以下首先构建了所有条目的列表。这将返回到呼叫者,Python的json.dump()用于将列表写入output.json

import requests
from bs4 import BeautifulSoup as bs
import json
from operator import itemgetter
from pprint import pprint

fields = ['Item', 'Group number', 'Field 3', 'Field 4']
record = itemgetter(0, 1, 3, 4)    # Skip the blank 2nd entry

def get_html(url):
    r = requests.get(url)
    return r.text

def get_data(html):
    soup = bs(html, 'lxml')
    trs = soup.find('table', {'style':'padding-top:10px;'})
    rows = []
    for tr in trs.find_all('tr'):
        for td in tr.find_all('td'):
            a_tags = td.find_all('a')
            if a_tags:
                row = {field : value.get_text(strip=True) for field, value in zip(fields, record(a_tags))}
                rows.append(row)
    return rows

def main():
    groups = {
        'T-691': 'https://kbp.by/rasp/timetable/view_beta_tbp/?cat=group&id=26',
        'Т-717': 'https://kbp.by/rasp/timetable/view_beta_tbp/?cat=group&id=62'
    }
    group = input()
    url = 'https://kbp.by/rasp/timetable/view_beta_tbp/?cat=group&id={}'.format(groups[group])
    rows = get_data(get_html(url))
    with open('output.json', 'w', encoding='utf-8') as f_output:
        json.dump(rows, f_output)
if __name__ == '__main__':
    main()

给您output.json开始:

[
    {
        "Item": "ТестОтладкаПО",
        "Group number": "Якимович К",
        "Field 3": "Т-691",
        "Field 4": "408"
    },
    {
        "Item": "МатемМоделир",
        "Group number": "Клименко Д.Ф.",
        "Field 3": "Т-691",
        "Field 4": "429"
    }
]

您将需要分配正确的字段名称。

最新更新