Я сканирую сайт и получаю данные из некоторых ajax выпадающих меню, и эти данные связаны между собой. Итак, для простоты, скажем, я сканирую 1-й выпадающий список, и он дает мне имя и значение, и я использую значения для запуска al oop и для следующего выпадающего списка и получаю его имя, значение и т. Д. c. Скажем, данные даны для стран, затем регионов, районов и т. Д. c. Так что я могу получить имя, значения; Теперь я хочу присоединиться к каждой стране, которая будет заполнена соответствующими регионами, а регионы заполнены соответствующими районами.
Пример кода:
import requests
from bs4 import BeautifulSoup
URL = "https://somesite.com/"
COUNTRIES = {
"NAME": 1,
"ANOTHER": 2
}
REGIONS = {}
DISTRICTS = {}
def fetch(s, url, value, store):
data = {
'id': str(value)
}
res = s.post(url, data=data)
soup = BeautifulSoup(res.content, 'html5lib')
options = soup.find_all('option')[1:]
for option in options:
name = option.text
value = option.get('value')
#value = option.attrs['value']
store[name] = value
for name, val in COUNTRIES.items():
fetch(requests, URL+"getregions", val, REGION)
for name, val in REGIONS.items():
fetch(requests, URL+"getdistricts", val, DISTRICTS)
Я хочу объединить все это в конец, чтобы иметь один вложенный json / dict в форме:
DATA = {
"COUNTRY1": {
"REGION1": {
"DISTRICT1": { "WARDS": ..... },
"DISTRICT2": { "WARDS": ..... },
},
"REGION2": {
"DISTRICT1": { "WARDS": ..... },
"DISTRICT2": { "WARDS": ..... },
},
},
"COUNTRY2": {
"REGION1": {
"DISTRICT1": { "WARDS": ..... },
"DISTRICT2": { "WARDS": ..... },
},
"REGION2": {
"DISTRICT1": { "WARDS": ..... },
"DISTRICT2": { "WARDS": ..... },
},
},
}
Если возможно, также в этой форме:
[{
country: "NAME",
region: "RNAME",
district: "DNAME",
ward: "WNAME"
},
{
country: "NAME",
region: "RNAME",
district: "DNAME",
ward: "WNAME"
},
Для обоих SQL и Нет SQL.
Я думал о замыканиях и тому подобном, но я просто не могу найти логи c для его реализации. Любой, кто может помочь, будет очень благодарен, предпочтительный ответ в Python, пожалуйста.
Я новичок в задании вопросов здесь, и мне потребовалось некоторое время, чтобы составить этот вопрос, я прошу прощения, если он не является кратким и пожалуйста, спросите, если вы не поняли, чтобы я мог объяснить больше.