python-爬取印度銀行對應的ifsc

數據來源:https://economictimes.indiatimes.com/wealth/ifsc-bank-code

Python獲取印度各銀行對應的ifsc(前4位):

import requests
import re
headers = {
        "User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
    }
html = requests.get(url = 'https://economictimes.indiatimes.com/wealth/ifsc-bank-code', headers=headers)
# 轉換數據格式
html = html.text
bank_value = re.compile('<span class="ifscdata-option">(.*?)</span>')
bank_text = re.findall(bank_value, html)[0]

# 檢索銀行name
bank_name_value = re.compile('<option value="(.*?)"')
# 檢索邦state
state_value_1 = re.compile('"stateList":(.*?),"bankName":')
state_value_2 = re.compile('"key":"(.*?)"}')
# 檢索district
district_value = re.compile('"key":"(.*?)"}')
# 檢索branch
branch_value = re.compile('"key":"(.*?)"}')
# 檢索ifsc
ifsc_value = re.compile('"ifsc":"(.*?)"')

bank_name_list = re.findall(bank_name_value, bank_text)
print('銀行列表size:', len(bank_name_list))

import xlsxwriter
workbook = xlsxwriter.Workbook('bank_ifsc.xlsx')
worksheet = workbook.add_worksheet()
r = 0
for bank_name in bank_name_list:
    print('r:', r, ',bank_name:', bank_name)
    ## 獲取state,選擇其一
    res_state = requests.get('https://mfapps.indiatimes.com/ET_Calculators/statesByBank.htm?bankname=%s&callback=objIFSC.stateDataRender' % bank_name)
    res_state = res_state.text
    res_state = re.findall(state_value_1, res_state)[0]
    state = re.findall(state_value_2, res_state)[0]
    #print('邦:' , state)

    ## 獲取district,選擇其一
    res_district = requests.get('https://mfapps.indiatimes.com/ET_Calculators/getDistrictByBankAndState.htm?bankname=%s&statename=%s&callback=objIFSC.districtDataRender' % (bank_name, state))
    res_district = res_district.text
    district = re.findall(district_value, res_district)[0]
    # print('district:' , district)
    
    ## 獲取 branch, 選擇其一
    res_branch = requests.get('https://mfapps.indiatimes.com/ET_Calculators/branchList.htm?bankname=%s&statename=%s&districtname=%s&callback=objIFSC.branchDataRender' % (bank_name, state, district))
    res_branch = res_branch.text
    branch = re.findall(branch_value, res_branch)[0]
    # print('branch:' , branch)

    ## 獲取ifsc
    res_ifsc = requests.get('https://mfapps.indiatimes.com/ET_Calculators/bankDetails.htm?bankname=%s&statename=%s&districtname=%s&branchname=%s&callback=objIFSC.getIfscData' % (bank_name, state, district, branch))
    res_ifsc = res_ifsc.text
    ifsc = re.findall(ifsc_value, res_ifsc)[0]
    # print(ifsc)

    # 銀行name
    worksheet.write(r, 0, bank_name.upper().replace("-", " "))
    # 銀行ifsc 前4位
    worksheet.write(r, 1, ifsc[0:4])
    r = r + 1

workbook.close()

大約拉取時長十分鐘左右,請耐心等待···

生成xlsx: 總條數186
xlsx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章