如何用 Python 提高效率

fybi4570 8年前
   <p style="text-align:center"><img src="https://simg.open-open.com/show/d9e5e00848e7396be787267a4de9515c.png"></p>    <p>经常有人说我应该学一门语言,比如 Python 之类,但是却不知道如何入门。这个时候很多人会推荐学各种 web 框架,scrapy 爬虫之类,门槛虽然不高,但是对于新人来说可能就半途而废了。大家需要的或许是通过编程来解决平时遇到的问题,将工作自动化。本文将通过简单的例子来说下 Python 如何提高效率,减少重复劳动的。</p>    <p>废话不多说,进入正题,首先安装 Python 和 pip, 教程网上很多,比如 <a href="/misc/goto?guid=4959727720459671999" rel="nofollow,noindex"> 廖雪峰的官方网站 </a> 。 pip 可以理解为安装第三方库的软件包,另外教程里面没有特别说明以 Python2.7 版本为例子。</p>    <p> </p>    <h2><strong>0x01 selenium 自动登录京东</strong></h2>    <p>还记得前段时间阿里月饼事件,当事人因为用 js 脚本刷月饼被开除。直接编写 js 代码可能不够直观,所以本文我们用 selenium 来模拟浏览器执行自动化脚本,同样可以达到效果,比如自动登录京东。</p>    <ul>     <li>安装 selenium <pre>  <code class="language-python">pip install selenium</code></pre> </li>     <li>打开京东登录页,用 chrome devtools 查看元素, 我们需要做的步骤就是输入用户名和密码,点击登录按钮。</li>    </ul>    <p><img src="https://simg.open-open.com/show/4092a69fc516edcfc2f935c19298c240.png"></p>    <pre>  <code class="language-python">name = '****'  password = '****'    # 使用火狐作为默认打开的浏览器,确认已经安装火狐  driver = webdriver.Firefox()  driver.get("https://passport.jd.com/new/login.aspx")    elem_account = driver.find_element_by_name("loginname")  elem_password = driver.find_element_by_name("nloginpwd")    elem_account.clear()  elem_password.clear()    elem_account.send_keys(name)  elem_password.send_keys(password)    driver.find_element_by_id("loginsubmit").click()</code></pre>    <p>只需要更改上面的用户名和密码就能运行脚本, 代码见 <a href="/misc/goto?guid=4959727720541505129" rel="nofollow,noindex"> github </a></p>    <ul>     <li>其实 selenium 可以用来秒杀,抢手机,抢火车票。有验证码的时候,自动识别可能有误差,可以手工输入或者一些其他方式。。。</li>    </ul>    <h2><strong>0x02 SimpleHTTPServer 文件共享</strong></h2>    <p>有时候你会想要跟一个局域网的人共享文件,如果文件太多,那么用微信一个一个传可能不太方便,这个时候就祭出 SimpleHTTPServer 这个杀器,一行代码都不用写,先 cd 到你需要共享的目录</p>    <pre>  <code class="language-python">$ cd /home/share/images</code></pre>    <p>然后直接命令行输入</p>    <pre>  <code class="language-python">python -m SimpleHTTPServer</code></pre>    <p>接下来用 ifconfig (windows 下是 ipconfig)查看你的内网 ip, 假设是 192.168.0.11, 在浏览器输入 <a href="/misc/goto?guid=4959727720632242949" rel="nofollow,noindex"> http:// 192.168.0.11:8000 </a> 即可看到</p>    <p><img src="https://simg.open-open.com/show/11823d185fa1af1686b6dabf312c42fc.png"></p>    <h2>0x03 豆瓣自动顶贴</h2>    <p>程序员喜欢是用代码解放双手,能懒则懒。举个例子,你在豆瓣上发布了一个帖子,希望过段时间就回复下来置顶,那么一个是手工回复,当然也可以写脚本来做</p>    <ul>     <li>首先登录豆瓣,进入你需要回复的帖子页面,打开 chrome dev_tools, 当点击回复帖子的时候,查看 NetWork, 可以看到如下图</li>    </ul>    <p><img src="https://simg.open-open.com/show/667f506808509477dca8a01a9f18477f.png"></p>    <p>这里面最重要的是 Cookie 这个东西,他记录了你的登录状态,所以用脚本其实只需要发送带这个 Cookie 的请求就行。</p>    <ul>     <li>三行代码就能搞定</li>    </ul>    <pre>  <code class="language-python"># rv_comment 为你需要回复的字段  payloads = {'ck': 'n1iQ', 'rv_comment': 'up', 'start': '0', 'submit_btn': u'加上去'}    # Cookie 自己去填  headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36', 'Cookie': '******'}    requests.post('https://www.douban.com/group/topic/93461964/add_comment', data=payloads, headers=headers)</code></pre>    <p>代码见 <a href="/misc/goto?guid=4959727720701876000" rel="nofollow,noindex"> github </a></p>    <ul>     <li>这种方式去刷帖肯定是有风险的,所以请大家谨慎使用</li>    </ul>    <h2><strong>0x04 摩尔斯密码 </strong></h2>    <p>这是一个很无聊的需求,哈哈,如果你想通过摩尔斯密码聊天的话, 或者跟暗恋的人表白</p>    <p><img src="https://simg.open-open.com/show/6135ab83899128982bc4f5536ee879ae.png"></p>    <ul>     <li>安装依赖</li>    </ul>    <pre>  <code class="language-python">pip install morse-talk</code></pre>    <ul>     <li>将文字编码成摩尔斯密码</li>    </ul>    <pre>  <code class="language-python">import morse_talk as mtalk  content = 'i love you'  mo_content = mtalk.encode(content)  print mo_content</code></pre>    <ul>     <li>输出</li>    </ul>    <pre>  <code class="language-python">..       .-..   ---   ...-   .       -.--   ---   ..-</code></pre>    <ul>     <li>解摩尔斯码</li>    </ul>    <pre>  <code class="language-python">import morse_talk as mtalk  mo_content = '-.--   ---   ..-'  content = mtalk.decode(mo_content)  print content</code></pre>    <ul>     <li>输出</li>    </ul>    <pre>  <code class="language-python">'YOU'</code></pre>    <h2>0x05 批量发邮件</h2>    <p>如果有一天,老板过来给你一个很大的邮箱列表,要你给每个人发邮件,你该如何去做,最简单的就是写一个 python 程序</p>    <pre>  <code class="language-python">import smtplib  from email.mime.text import MIMEText    receiver = ['***', '***'] # 设置邮件接收人,这里是我的公司邮箱    host = 'smtp.163.com'  # 设置发件服务器地址  port = 25  # 设置发件服务器端口号  sender = '****'  # 设置发件邮箱  pwd = '*****'  # 设置发件邮箱的密码  body = 'hello' # 设置邮件正文,这里是支持HTML的    msg = MIMEText(body, 'html') # 设置正文为符合邮件格式的HTML内容  msg['subject'] = 'Hello world' # 设置邮件标题  msg['from'] = sender  # 设置发送人  msg['to'] = ';'.join(receiver)  # 设置接收人    s = smtplib.SMTP(host, port)   s.login(sender, pwd)  # 登陆邮箱  s.sendmail(sender, receiver, msg.as_string())  # 发送邮件</code></pre>    <p>不过由于每个垃圾邮件的屏蔽机制,很可能批量发送会被 spam 掉,所以可以使用 sendcloud 专门的发邮件服务接口。</p>    <p>代码见 <a href="/misc/goto?guid=4959727720792055504" rel="nofollow,noindex"> github </a></p>    <p> </p>    <p>来自:https://zhuanlan.zhihu.com/p/24097377</p>    <p> </p>