用Python獲取最新的省 市 縣

2021-08-31 20:46:38 字數 2982 閱讀 3107

因為資料庫的資料資訊建於12年,很多地區**關係和名稱都跟不上了,讓我手動乙個個新增又覺得麻煩,怎麼說我也是乙個碼農而不是文員,上**:

#! /usr/bin/env python

# coding=utf-8

import requests

from lxml import etree

import sys

import xlwt

import re

import copy

import json

from lxml.html import fromstring,tostring

import htmlparser

import re

#初始化

reload(sys)

sys.setdefaultencoding('utf8')

#根據網頁原始碼,匹配並返回原始碼內指定的整個a標籤

def get_content(data,str,num=999):

#刪除第一次獲取資料時,多餘的第一第二個資料

if num == 36:

del content[0],content[0]

return content

#根據省編碼獲取**編碼和地區名稱

# url2s = url+key[0]+'.htm'

# data2s = requests.get(url2s,stream=true).content #呼叫拼接的鏈結 獲取資料

# content2 = get_content(data2s,"//div/table/tr/td/a")

# contents += content2

for htm in key:

url2s = url+htm+'.htm'

print url2s

data2s = requests.get(url2s,stream=true).content #呼叫拼接的鏈結 獲取資料

content2 = get_content(data2s,"//div/table/tr/td/a")

contents += content2

return contents

#根據a標籤list資料,進行正規表示式匹配獲取需要的地區編碼和地區名稱,並寫入檔案儲存

def set_data(data):

dictdata = {}

for x in data:

key = re.search(r"\d+\d+\d+", x, re.m)

val = re.search(r"[^\x00-\xff]+", x, re.m)

#生成字典

dictdata[key.group()] = val.group()

#print key.group()+"-"+val.group()

#對字典進行排序,排序後得到的是list型別的資料,而不是字典

newdata = sorted(dictdata.items(), key=lambda e:e[0])

# 如果filename不存在會自動建立, 'w'表示寫資料,寫之前會清空檔案中的原有資料!

filename = "area.txt"

with open(filename,'w') as f:

for d in newdata:

# print json.dumps(d, ensure_ascii=false, encoding='utf-8')

print d[0]+"-"+d[1]

f.write(d[0]+"-"+d[1]+"\n")

#執行處理方法

url = ''

#測試資料

datagg = [u'\u5317\u4eac', u'\u5929\u6d25',

u'\u4e0a\u6d77', u'\u91cd\u5e86',

u'\u5c71\u4e1c', u'\u5c71\u897f',

u'\u6cb3\u5317', u'\u6cb3\u5357',

u'\u6e56\u5357', u'\u6e56\u5317',

u'\u6c5f\u82cf', u'\u6d59\u6c5f',

u'\u5b89\u5fbd', u'\u798f\u5efa',

u'\u5409\u6797', u'\u8fbd\u5b81',

u'\u9ed1\u9f99\u6c5f', u'\u6c5f\u897f',

u'\u9655\u897f', u'\u6d77\u5357',

u'\u56db\u5ddd', u'\u8d35\u5dde',

u'\u4e91\u5357', u'\u7518\u8083',

u'\u9999\u6e2f', u'\u6fb3\u95e8',

u'\u53f0\u6e7e', u'\u5e7f\u4e1c',

u'\u5e7f\u897f', u'\u897f\u85cf',

u'\u9752\u6d77', u'\u5b81\u590f',

u'\u65b0\u7586', u'\u5185\u8499\u53e4']

dataall = get_url(url)

set_data(dataall)

exit()

這個爬蟲是第二版,第一版因為效率問題讓我很不滿意,所有遺留了很多引用包,可以忽略。

在這次編碼過程,也學習了很多python的內容:

1,字典是關聯陣列,不能使用下標來呼叫值,排序後返回的是二維的list資料型別

2,用xpath獲取整個a標籤時,需要xpath引數的定位規則

3,資料在控制台輸出的時候,中文顯示的是十六進製制,檢視是否是因為 整個list輸出的原因,如二維list迴圈輸出的是一維list,所有還需要進行更精確的指定到中文的節點,即:list顯示十六進製制,要精確到末尾接單才會正常顯示。當然也可以用json模組的方法進行處理輸出,注釋**內有寫。

因為興趣而隨便寫寫,覺得好玩,便分享出來

獲取最新最完整的省市縣資料

2019年11月中華人民共和國縣以上行政區劃 json github原始碼 什麼地方可以獲取最權威的省市縣資料?當然是官網 民政部門門戶 在 的最下面,你可以看到最新的行政區劃分 開啟連線,資料是這樣展示的 顯然,這樣的資料我們是無法使用的,通過檢視網頁原始碼發現 我們需要的地區名字和 都對應htm...

mysql 2019最新省市縣

建立資料庫 create table mdm04 imdm04 bigint 20 not null comment id mddydm varchar 25 collate utf8 unicode ci default null comment 區域 mddymc varchar 50 coll...

Python獲取全國所有的省 市 縣 鎮 村

usr bin python3 coding utf 8 author he 通過國家統計局資料 獲取中國所有城市列表 獲取全國省份和直轄市 獲取省下級市 獲取市下級縣 縣下級鎮 鎮下級村 print 省 c citytr u url,he header,lists p print 市 o coun...