我有来自站点的响应。我想用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"
}
]
您将需要分配正确的字段名称。