鱼C论坛

 找回密码
 立即注册
查看: 2853|回复: 4

[新人报道] 看到一个快递查询程序,写了点注释,请大家指教

[复制链接]
发表于 2020-3-19 21:07:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import requests#它是一个Python第三方库,处理URL资源特别方便
import bs4#BeautifulSoup最主要的功能是从网页抓取数据,Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码
import re#re 模块使 Python 语言拥有全部的正则表达式功能


def express_type_get():#因此我们需要再写一个函数来生成更多快递公司的查询链接,
    express_type = ('sfexpress', 'yunda', 'sto', 'yto', 'zto', 'ems', 'ttdex', 'htky', 'qfkd', 'chinapost')#定义一个元组放入各个快递公司的名称
    print(
        '////////////////快递公司////////////////\n1.顺丰 2.韵达 3.申通 4.圆通 5.中通\n6.EMS 7.天天 8.汇通 9.全峰 10.邮政\n////////////////////////////////////////')
    while True:
        express = int(input('请选择快递公司(数字):'))要求输入快递公司的代号数字
        if express:#这个条件判断语句等价于if express!=0
            if express <= 10 and express >= 1:
                break#如果快递公司的编号小于等于10并且大于等于1则跳出循环
            else:#负责显示“错误的选择”
                print("错误的选择!")
        else:
            print("不能为空!")#如果判断express是等于0则输出“不能为空!”
    return code == express_type[express - 1]#确定是哪个快递公司并将快递公司名称返回


def get_url(code, id):#定义获取一个网址并加快递公司名称及快递编号
    url = 'http://m.46644.com/express/result.php?typetxt=%D6%D0%CD%A8&type=' + code + '&number=' + id

    return url#返回加入快递公司名称及编号的网址
def send(kuaidi):#将取到的快递信息发送到我的邮箱的函数
    yag = yagmail.SMTP( user="登陆邮箱", password="密码", host='smtp.qq.com')#将用户名、密码、主机指定并采用STMP方式
    # 邮箱正文
    contents = kuaidi#邮件的内容就是快递的内容
    # 发送邮件
    yag.send('目标邮箱', '最新快递追踪', contents)#发送邮件需要目标邮箱、标题就是“最新快递追踪”内容就是contents = kuaidi
    print('邮件发送成功')#显示发送成功


def main ():


///用requests+bs4爬结果和提取我们需要的目标信息,当然注意到这只是中通快递的查询链接
kuaidi = []
url='http://m.46644.com/express/result.php?typetxt=%D6%D0%CD%A8&type=zto&number=你的单号'#快递为中通单号为“你的单号”
response = requests.get(url)#用于请求目标网站,并将请求到的网站代码给RESPONSE
response.encoding = 'gb18030'#请求的代码的编码方式指定为GB18030
response = response.text#返回输出网页的内容,解决乱码问题
soup = bs4.BeautifulSoup(response,'html.parser',from_encoding="utf8")#将respones解析,制定解析器为html.parser编码格式为utf8
for i in soup.findAll(name='div',attrs = {'class':'icontent'}):#将网页中DIV目录下的属性class':'icontent的值遍历赋给I
    kuaidi.append(i.get_text())#将I获取的文本加入到快递列表中
    print(i.get_text())#打印I获取的快递文本内容
if __name__=='__main__':
   main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-19 21:08:23 | 显示全部楼层
大家给看看,我的注释错了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-20 13:20:26 | 显示全部楼层
注释不用每行都加吧
这样显得程序有点乱。
我认为在大部分人都看的懂的语句后无需加注释
 if express:#这个条件判断语句等价于if express!=0
            if express <= 10 and express >= 1:
                break
            else:
                print("错误的选择!")
        else:
            print("不能为空!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-3-20 13:33:27 | 显示全部楼层
终于有人回帖了,好高兴
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-20 14:23:37 | 显示全部楼层
注释好多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 01:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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