我正在抓取一个站点,从一些ajax下拉列表中获取数据,这些数据是相关的。 因此,基本上,为了简单起见,假设我抓取第一个下拉列表,它给我,名称和值,我使用这些值运行一个循环,下一个下拉列表得到它的名称,值,等等。假设数据是针对国家,然后是地区,然后是地区,等等。 这样我就可以得到名称、值;现在,我想加入每个国家的行列,让它们各自的相关地区来填补空缺,让它们各自的相关地区来填补空缺
示例代码:
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和NoSQL
我想到过闭包之类的东西,但我似乎找不到实现它的逻辑。 任何能帮上忙的人都会非常感激的,请用Python给出最好的答案
我是新来这里问问题的,我花了一段时间来写这个问题,我很抱歉,如果它不简洁,请询问您是否理解,以便我可以解释更多
目前没有回答
相关问题 更多 >
编程相关推荐