吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5108|回复: 109
收起左侧

[Python 原创] 快递停发区域查询-更新复制地址识别—根据’忆白学渣‘大佬做个界面

  [复制链接]
flower0712 发表于 2022-12-4 16:52
本帖最后由 flower0712 于 2022-12-4 20:49 编辑

原帖作者@忆白学渣
原帖:https://www.52pojie.cn/thread-1721679-1-1.html

做界面后代码
[Python] 纯文本查看 复制代码
import requests
import tkinter as tk
from tkinter import *
import threading

class jiemian():
    def __init__(self):
        self.root = tk.Tk()
        self.root.title('快递停发区域查询')
        self.size = self.root.geometry('300x400')
        self.sende_email_label = tk.Label(self.root, text='省份').place(x=0, y=0)
        self.send_get_label = tk.Label(self.root, text='市区').place(x=0, y=20)
        self.set_subject_label = tk.Label(self.root, text='县城').place(x=0, y=40)
        self.send_get_name_label = tk.Label(self.root, text='门牌号').place(x=0, y=60)
        self.start = tk.Button(self.root, text='开始查询', command=lambda: jiemian.thread(self))
        self.start.place(x=200, y=50)

        self.send_email_entry = tk.Entry(self.root)
        self.send_email_entry.place(x=55, y=0)
        self.send_get_entry = tk.Entry(self.root)
        self.send_get_entry.place(x=55, y=20)
        self.set_subject_entry = tk.Entry(self.root)
        self.set_subject_entry.place(x=55, y=40)
        self.send_get_name_entry = tk.Entry(self.root)
        self.send_get_name_entry.place(x=55, y=60)
        self.txt = Text(self.root)
        self.txt.place(x=0, y=100)
        self.root.mainloop()
    def kuaidi(self):
        requests.packages.urllib3.disable_warnings()
        url = 'https://p.kuaidi100.com/apicenter/order.do?method=expressStopInquiries'
        header = {'Host': 'p.kuaidi100.com', 'Connection': 'keep-alive', 'xweb_xhr': '1',
                  'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 MicroMessenger/7.0.4.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF',
                  'Content-Type': 'application/x-www-form-urlencoded', 'Accept': '*/*', 'Sec-Fetch-Site': 'cross-site',
                  'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty',
                  'Referer': 'https://servicewechat.com/wx6885acbedba59c14/683/page-frame.html', 'Accept-Language': 'en-us,en',
                  'Accept-Encoding': 'gzip, deflate', 'Content-Length': '476'}
        data = {'platform': 'WWW', 'toProvince': self.send_email_entry.get(), 'toCity': self.send_get_entry.get(), 'toArea': self.set_subject_entry.get(), 'toAddress':  self.send_get_name_entry.get()}

        res = requests.request(method='POST', url=url, headers=header, data=data, verify=False)

        res = res.json()
        #print(res)
        kuaidi = res['data']['toReachable']
        for i in kuaidi:
            if i['expressCode']=='yuantong':
                i['expressCode']='圆通'
            if i['expressCode']=='shentong':
                i['expressCode']='申通'
            if i['expressCode']=='zhongtong':
                i['expressCode']='中通'
            if i['expressCode']=='yunda':
                i['expressCode']='韵达'
            if i['expressCode'] == 'jtexpress':
                i['expressCode'] = '极兔'
            if i['expressCode'] == 'debangkuaidi':
                i['expressCode'] = '德邦'
            if i['expressCode'] == 'jd':
                i['expressCode'] = '京东'
            if i['expressCode'] == 'shunfeng':
                i['expressCode'] = '顺丰'
            if i['expressCode'] == 'youzhengguonei':
                i['expressCode'] = '邮政'
        for i in kuaidi:

            if i['reachable'] == 1:
                s=str(i['expressCode'] + ':已经开通\n')
                self.txt.insert(END, s)
            if i['reachable'] ==0 :
                s=str(i['expressCode'] + ':停发\n')
                self.txt.insert(END, s)

    def thread(self):
        self.thread=threading.Thread(target=lambda :self.kuaidi())
        self.thread.setDaemon(True)
        self.thread.start()
if __name__=='__main__':
    jiemian()


运行结果截图




链接:https://pan.baidu.com/s/1O3cfA4zrZbusPJ3FIkHhOg
提取码:aiy2




更新支持复制地址识别,但可能存在识别不准确问题

[Python] 纯文本查看 复制代码
import requests
import tkinter as tk
from tkinter import *
import threading
import re
class jiemian():
    def __init__(self):
        self.root = tk.Tk()
        self.root.title('快递停发区域查询')
        self.size = self.root.geometry('300x400')
        self.sende_email_label = tk.Label(self.root, text='省份').place(x=0, y=0)
        self.send_get_label = tk.Label(self.root, text='市区').place(x=0, y=20)
        self.set_subject_label = tk.Label(self.root, text='县城').place(x=0, y=40)
        self.send_get_name_label = tk.Label(self.root, text='门牌号').place(x=0, y=60)
        self.start = tk.Button(self.root, text='开始查询', command=lambda: jiemian.thread(self))
        self.start.place(x=200, y=50)
        self.send_get_name_label_read = tk.Label(self.root, text='自动识别').place(x=0, y=80)
        self.send_email_entry1 = tk.Entry(self.root)
        self.send_email_entry1.place(x=55, y=81)
        self.send_email_entry = tk.Entry(self.root)
        self.send_email_entry.place(x=55, y=0)
        self.send_get_entry = tk.Entry(self.root)
        self.send_get_entry.place(x=55, y=20)
        self.set_subject_entry = tk.Entry(self.root)
        self.set_subject_entry.place(x=55, y=40)
        self.send_get_name_entry = tk.Entry(self.root)
        self.send_get_name_entry.place(x=55, y=60)
        self.txt = Text(self.root)
        self.txt.place(x=0, y=100)
        self.root.mainloop()

    def kuaidi(self):
        self.txt.delete("1.0", "end")
        if self.send_email_entry1.get()!='':
            PATTERN1 = r'([\u4e00-\u9fa5]{2,5}?(?:省|自治区|市)){0,1}([\u4e00-\u9fa5]{2,7}?(?:区|市|州)){0,1}([\u4e00-\u9fa5]{2,7}?(?:县|区)){0,1}([\u4e00-\u9fa5]{2,7}?(?:镇|乡)){0,1}([\u4e00-\u9fa5]{2,7}?(?:村|街|街道)){0,1}([\d]{1,3}?(号)){0,1}'
            # \u4e00-\u9fa5 匹配任何中文
            # {2,5} 匹配2到5次
            # ? 前面可不匹配
            # (?:pattern) 如industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。意思就是说括号里面的内容是一个整体是以y或者ies结尾的单词
            pattern = re.compile(PATTERN1)
            p1 = ''
            p2 = ''
            p3 = ''
            p4 = ''
            p5 = ''
            p6 = ''
            m = pattern.search(self.send_email_entry1.get())
            if not m:
                print('None')
            if m.lastindex >= 1:
                p1 = m.group(1)
            if m.lastindex >= 2:
                p2 = m.group(2)
            if m.lastindex >= 3:
                p3 = m.group(3)
            if m.lastindex >= 4:
                p4 = m.group(4)
            if m.lastindex >= 5:
                p5 = m.group(5)
            if m.lastindex >= 6:
                p6 = m.group(6)
            if p1 == '' or None:
                self.txt.insert(END, '没有匹配到省份\n')
            if p2 == '' or None:
                self.txt.insert(END, '没有匹配到市或区\n')
            if p3 == '' or None:
                self.txt.insert(END, '没有匹配到县城或区\n')
            if p4 == '':
                p4 = '人民政府'
            out = '%s|%s|%s|%s|%s|%s' % (p1, p2, p3, p4, p5, p6)
            print(out)
            requests.packages.urllib3.disable_warnings()
            url = 'https://p.kuaidi100.com/apicenter/order.do?method=expressStopInquiries'
            header = {'Host': 'p.kuaidi100.com', 'Connection': 'keep-alive', 'xweb_xhr': '1',
                      'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 MicroMessenger/7.0.4.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF',
                      'Content-Type': 'application/x-www-form-urlencoded', 'Accept': '*/*',
                      'Sec-Fetch-Site': 'cross-site',
                      'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty',
                      'Referer': 'https://servicewechat.com/wx6885acbedba59c14/683/page-frame.html',
                      'Accept-Language': 'en-us,en',
                      'Accept-Encoding': 'gzip, deflate', 'Content-Length': '476'}
            data = {'platform': 'WWW', 'toProvince': p1, 'toCity': p2, 'toArea': p3,
                    'toAddress': p4+p5+p6}

            res = requests.request(method='POST', url=url, headers=header, data=data, verify=False)

            res = res.json()
            # print(res)
            kuaidi = res['data']['toReachable']
            for i in kuaidi:
                if i['expressCode'] == 'yuantong':
                    i['expressCode'] = '圆通'
                if i['expressCode'] == 'shentong':
                    i['expressCode'] = '申通'
                if i['expressCode'] == 'zhongtong':
                    i['expressCode'] = '中通'
                if i['expressCode'] == 'yunda':
                    i['expressCode'] = '韵达'
                if i['expressCode'] == 'jtexpress':
                    i['expressCode'] = '极兔'
                if i['expressCode'] == 'debangkuaidi':
                    i['expressCode'] = '德邦'
                if i['expressCode'] == 'jd':
                    i['expressCode'] = '京东'
                if i['expressCode'] == 'shunfeng':
                    i['expressCode'] = '顺丰'
                if i['expressCode'] == 'youzhengguonei':
                    i['expressCode'] = '邮政'
            for i in kuaidi:

                if i['reachable'] == 1:
                    s = str(i['expressCode'] + ':已经开通\n')
                    self.txt.insert(END, s)
                if i['reachable'] == 0:
                    s = str(i['expressCode'] + ':停发\n')
                    self.txt.insert(END, s)

        else :

            requests.packages.urllib3.disable_warnings()
            url = 'https://p.kuaidi100.com/apicenter/order.do?method=expressStopInquiries'
            header = {'Host': 'p.kuaidi100.com', 'Connection': 'keep-alive', 'xweb_xhr': '1',
                      'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 MicroMessenger/7.0.4.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF',
                      'Content-Type': 'application/x-www-form-urlencoded', 'Accept': '*/*', 'Sec-Fetch-Site': 'cross-site',
                      'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty',
                      'Referer': 'https://servicewechat.com/wx6885acbedba59c14/683/page-frame.html', 'Accept-Language': 'en-us,en',
                      'Accept-Encoding': 'gzip, deflate', 'Content-Length': '476'}
            self.province=self.send_email_entry.get()
            self.city=self.send_get_entry.get()
            self.area=self.set_subject_entry.get()
            self.adddress=self.send_get_name_entry.get()
            data = {'platform': 'WWW', 'toProvince':self.province , 'toCity':self.city , 'toArea':self.area , 'toAddress': self.adddress }

            res = requests.request(method='POST', url=url, headers=header, data=data, verify=False)

            res = res.json()
            #print(res)
            kuaidi = res['data']['toReachable']
            for i in kuaidi:
                if i['expressCode']=='yuantong':
                    i['expressCode']='圆通'
                if i['expressCode']=='shentong':
                    i['expressCode']='申通'
                if i['expressCode']=='zhongtong':
                    i['expressCode']='中通'
                if i['expressCode']=='yunda':
                    i['expressCode']='韵达'
                if i['expressCode'] == 'jtexpress':
                    i['expressCode'] = '极兔'
                if i['expressCode'] == 'debangkuaidi':
                    i['expressCode'] = '德邦'
                if i['expressCode'] == 'jd':
                    i['expressCode'] = '京东'
                if i['expressCode'] == 'shunfeng':
                    i['expressCode'] = '顺丰'
                if i['expressCode'] == 'youzhengguonei':
                    i['expressCode'] = '邮政'
            for i in kuaidi:

                if i['reachable'] == 1:
                    s=str(i['expressCode'] + ':已经开通\n')
                    self.txt.insert(END, s)
                if i['reachable'] ==0 :
                    s=str(i['expressCode'] + ':停发\n')
                    self.txt.insert(END, s)

    def thread(self):
        self.thread=threading.Thread(target=lambda :self.kuaidi())
        self.thread.setDaemon(True)
        self.thread.start()
if __name__=='__main__':
    jiemian()


运行结果








链接:https://pan.baidu.com/s/1NY0j3QBaW7FvaEUR1haJSw
提取码:hlwh
2.png

免费评分

参与人数 18吾爱币 +17 热心值 +16 收起 理由
csndwx + 1 + 1 鼓励转贴优秀软件安全工具和文档!
cdwdz + 1 + 1 谢谢@Thanks!
yxh19 + 1 + 1 谢谢@Thanks!
WwDaBao + 1 鼓励转贴优秀软件安全工具和文档!
gugao7046 + 1 + 1 老乡啊
120606363 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
XY5201314 + 1 + 1 谢谢@Thanks!
fiisoo + 1 对开驿站的我来说超级好用
top7777 + 1 + 1 很有用。
娜美 + 1 + 1 有没有可能把起点也加上?因为可能山东能收,但是北京-山东发不了
dzy75 + 1 + 1 我很赞同!
tianzhiyimu + 1 谢谢@Thanks!
electronic920 + 1 + 1 谢谢@Thanks!
opj1314 + 1 + 1 谢谢@Thanks!
C斯咚喃 + 2 + 1 当时看到就想有没有大佬打包一个
yjn866y + 1 + 1 谢谢@Thanks!
lq12013 + 1 我很赞同!
nywthy + 1 + 1 分享软件,精神可嘉!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

忆白学渣 发表于 2022-12-4 19:22
本帖最后由 忆白学渣 于 2022-12-4 19:24 编辑

嗨嗨嗨我来了,有人要的识别地址的 大概写了一点,自己写划分好麻烦 还是调库好点

[Python] 纯文本查看 复制代码
sss='河南省商丘市虞城县人民医院'
if '省' in sss :

    toProvince=sss.split('省')
    toCity=toProvince[1].split('市')
    toArea=toCity[1].split('县')
    print(toProvince[0],toCity[0],toArea[0],toArea[1])



import cpca

location_str ="河南省商丘市虞城县人民医院",
   
df = cpca.transform(location_str)
#print(df)
toProvince=df['省'][0]
toCity=df['市'][0]
toArea=df['区'][0]
toAddress=df['地址'][0]
print(toProvince,toCity,toArea,toAddress)



需要的可以自己写成函数啥的

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
10373064 + 1 + 1 我很赞同!
启年啊 + 1 用心讨论,共获提升!

查看全部评分

zthttt 发表于 2022-12-4 17:51
 楼主| flower0712 发表于 2022-12-5 08:41
xjhzz 发表于 2022-12-4 22:32
大佬,快递数据是否有更新,不然只能查到以前的情况,就没有什么意义啦

爬的数据就是最新的,如果这个接口还能用的话
 楼主| flower0712 发表于 2022-12-4 19:33
忆白学渣 发表于 2022-12-4 19:22
嗨嗨嗨我来了,有人要的识别地址的 大概写了一点,自己写划分好麻烦 还是调库好点

[mw_shl_code=python, ...

还有新疆兵团呢
小安哥。 发表于 2022-12-4 16:59
可以识别地址就更好了
cyxnzb 发表于 2022-12-4 17:07
快递100小程序可以参考下,有类似功能
HLY- 发表于 2022-12-4 17:13
cyxnzb 发表于 2022-12-4 17:07
快递100小程序可以参考下,有类似功能

你看看第31行,好像就是调用的快递100
CrushIndex 发表于 2022-12-4 17:20
学习到了
 楼主| flower0712 发表于 2022-12-4 17:20
HLY- 发表于 2022-12-4 17:13
你看看第31行,好像就是调用的快递100

看到有大佬搞的快递100的数据,做个界面
HLY- 发表于 2022-12-4 17:21
flower0712 发表于 2022-12-4 17:20
看到有大佬搞的快递100的数据,做个界面

嗯嗯哈哈哈
 楼主| flower0712 发表于 2022-12-4 17:21
小安哥。 发表于 2022-12-4 16:59
可以识别地址就更好了

这个啥意思啊
小安哥。 发表于 2022-12-4 17:22

整个地址复制进去可以识别省市县
 楼主| flower0712 发表于 2022-12-4 17:24
小安哥。 发表于 2022-12-4 17:22
整个地址复制进去可以识别省市县

用正则应该能做到我有时间试试
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 23:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表