lyz800903 发表于 2020-3-19 21:07:48

看到一个快递查询程序,写了点注释,请大家指教

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#确定是哪个快递公司并将快递公司名称返回


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()

lyz800903 发表于 2020-3-19 21:08:23

大家给看看,我的注释错了吗

liuzhengyuan 发表于 2020-3-20 13:20:26

注释不用每行都加吧
这样显得程序有点乱。
我认为在大部分人都看的懂的语句后无需加注释

if express:#这个条件判断语句等价于if express!=0
            if express <= 10 and express >= 1:
                break
            else:
                print("错误的选择!")
      else:
            print("不能为空!")

lyz800903 发表于 2020-3-20 13:33:27

终于有人回帖了,好高兴

WangJS 发表于 2020-3-20 14:23:37

注释好多{:5_107:}
页: [1]
查看完整版本: 看到一个快递查询程序,写了点注释,请大家指教