Python爬虫实战(基础篇)—22—获取中国<行政区划代码>—附完整版代码

专栏导读

  • 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手

  • 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注

  • 👍 该系列文章专栏:请点击——>Python办公自动化专栏求订阅

  • 🕷 此外还有爬虫专栏:请点击——>Python爬虫基础专栏求订阅

  • 📕 此外还有python基础专栏:请点击——>Python基础学习专栏求订阅

  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏

  • ❤️ 欢迎各位佬关注! ❤️

在这里插入图片描述
在这里插入图片描述

库的安装

用途安装
requests爬虫pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
lxmlxpathpip install lxml-i https://pypi.tuna.tsinghua.edu.cn/simple

分析页面

在这里插入图片描述

  • 1、URL:https://baike.baidu.com/item/%E8%A1%8C%E6%94%BF%E5%8C%BA%E5%88%92%E4%BB%A3%E7%A0%81/5650987?fr=ge_ala

  • 2、返回数据为网页(txt)

  • 3、如果返回的数据是静态网页,那么使用 lxml

在这里插入图片描述

  • 4、如果是直辖市、自治州,div标签会有一个属性【data-level】

  • 5、其他的都在一个div属性为【data-idx】

在这里插入图片描述

  • 6、注意容城县、雄县、安新县这三个地方,需要手动添加进最后保存的json中

  • 还有西沙区和南沙区,也需要单独处理

完整代码

# -*- coding: UTF-8 -*-
'''
@Project :测试 
@File    :获取全国行政地区编码.py
@IDE     :PyCharm 
@Author  :一晌小贪欢(278865463@qq.com)
@Date    :2024/9/22 下午12:05 
'''
import json

# headers信息
import requests
from lxml import etree

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
}
params = {
}

# 发起POST请求
response = requests.get(
    url="https://baike.baidu.com/item/%E8%A1%8C%E6%94%BF%E5%8C%BA%E5%88%92%E4%BB%A3%E7%A0%81/5650987?fr=ge_ala",
    params=params,
    headers=headers,
    verify=True
)

# 解析响应内容
data = response.text
# print(data)
data = etree.HTML(data)
body = data.xpath('//div[@class="J-lemma-content"]//div[@data-level or @data-idx ]')[4:-4]
code_dict = {}
for i in body:
    data = i.xpath('.//text()')[0].lstrip()
    if data == '':
        continue
    if '雄安新区户籍居民的户口簿和身份证登载' in data or '雄安新区' in data or '香港特别行政区810000' in data:
        continue
    if '容城县、雄县、安新县' in data:
        continue
    # print(data)
    add_code = data.split(' ')
    add_code = [i for i in add_code if i != '']
    print(add_code)
    if add_code[0] == '西沙区':
        add_code[0] = '460321'
    elif add_code[0] == '南沙区':
        add_code[0] = '460322'
    else:
        code_dict[add_code[0]] = add_code[1]

with open('code.json', 'w', encoding='utf-8') as f:
    json.dump(code_dict, f, ensure_ascii=False,indent=4)





总结

  • 希望对初学者有帮助

  • 致力于办公自动化的小小程序员一枚

  • 希望能得到大家的【一个免费关注】!感谢

  • 求个 🤞 关注 🤞

  • 此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏

  • 求个 ❤️ 喜欢 ❤️

  • 此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏

  • 求个 👍 收藏 👍

  • 此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一晌小贪欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值