python3查询快递进度简易版

我使用的语言是python3.

昨天研究了一下快递100的接口,发现输入一个运单号返回的结果不确定,我觉得很奇怪,不知道是为什么,所以我就想着直接模拟浏览器在浏览器直接输出运单号然后点击查询,最后将结果提取出来就好了。

基于这样的思想,我主要是以下面的步骤来实现的:
1、安装selenium和chromedriver(网上有教程,我写不到别人那么好)
2、使用webdriver打开快递100官网
3、去除弹出来的遮罩层(也就是广告)
4、找到填写运单号的input元素,模拟填写运单号
5、找到查询按钮的元素,模拟点击时间
6、等待几秒,使查询结果在界面显示
7、找到相应的元素,提取查询结果(我这边是先获取到整个界面的源代码,然后通过BeautifulSoup解析的,个人对BeautifulSoup更熟悉一点啦)

友情提示:我个人只测试了一下韵达快递,邮政快递、中通快递;因为顺丰需要输入手机号后四位能力有限没有去完善。


下面我要贴代码啦:

#coding=utf-8
#经测试,可以查询韵达快递,邮政,中通快递
#顺丰速运因为需要输入手机号后四位需要后续完善
from selenium import webdriver
import time
from bs4 import BeautifulSoup

num=input("请输入订单号: ")
#本来以为遮罩层是弹框的,所以加上了这段禁止弹窗的代码,笑死我自己了LOL
options = webdriver.ChromeOptions()
prefs = {
    'profile.default_content_setting_values' :
        {
        'notifications' : 2
         }
}
options.add_experimental_option('prefs',prefs)
driver = webdriver.Chrome(options = options)

#打开快递100官网
driver.get("https://kuaidi100.com")
#print(dir(driver))
#关闭遮罩层
driver.find_element_by_class_name("coupon-pop-close").click()
#填充订单号
driver.find_element_by_id('postid').send_keys(num)
#点击查询按钮
driver.find_element_by_id("query").click()
#等待查询结果显示
time.sleep(5)
#保存截图
#driver.get_screenshot_as_file('yunda.png')
#得到html
content = driver.page_source.encode('utf-8')
soup = BeautifulSoup(content,'html.parser')
#找到快递查询结果的table标签
result = soup.find('table',class_="result-info").tbody
if result is not None:
    #每行显示一条快递信息
    tr_list = result.find_all('tr')
    for tr in tr_list:
        print(tr.get_text())
else:
    print("暂时未查到快递信息,请检查订单号是否正确!")
driver.quit()

仅供学习,谁知道这段代码啥时候就又不能用了,学习是不能停止的,哭了,个人感觉selenium还是很强的,得有空多花点时间研究一下。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值