再续脚本情缘

翻译自Quora问答

原题What are the best Python scripts you‘ve ever written

译者:niithub

  • 抓取大学同学的简历

    那是我在班加罗尔的最后一年,为了获得每一位同学的手机号和家庭地址,我写了我人生中的第一个脚本,它可以从学校就业网站上下载我所有同学的简历。虽然这网站有一个认证,阻止那些未经授权的请求访问网站,但是他们使用的session-id是一个hash表,不够智能,所以基于注册用户的号码的哈希表的序列,动态的生成cookie头信息,然后发起一个HTTP GET请求,并不是很困难。从这以后,python成为了我生活中的一部分,滑稽脸.jpg。

  • 回复生日的祝福

    这是我之所以爱上Python,尽皆源于此。那年是2012年,我的第22个生日。我当时是在我的老家,印度的一个小村庄,一个一天通电时间不会长于8个小时的地方。因为第二天是我的生日,所以当我打开FaceBook的时候,全部是生日的祝福。我只有一个小时去回复所有的祝福,因为还有一个小时就停电了。。。。我的好朋友Python再一次帮我做到了。我写了一个类似于下面这样的脚本去回复感谢的话语。

  • 一天游遍印度

    那是2013年,我生日的前一个星期,我和去年一样,用python脚本回复生日祝福。那年我在一家卖汽车票的公司上班,我掌握着全印度的汽车票订购信息。我想也许我可以在印度地图上把这些信息映射出来。我遇到的第一个问题是我不知道这些城市的经纬度。接着我了解到,谷歌提供了一个反向地理编码的API,可以根据地图上城市的名字,返回经纬度,但是有一个限制,那就是一天只能请求2500次。所以我不得不在4次运行脚本的过程中,收集到大概8000个城市的地图。我把一些城市汽车票预定信息生成了SVG图像,然后利用Indiemapper网站,通过html和JavScrip把信息嵌入到我生成的在线印度地图上。这是经过渲染的7月5号的汽车票预定信息

  • 查询高考成绩

    这是一星期前,我为了一个特殊的人写的脚本。我想帮她拿到她的高考成绩,但是我既不知她的准考号,也不想去问她,是不是有点傻,但是有什么办法呢。我去了大学的网站,然后去找准考号的样式。我不得不去填一份申请,以此来生成我的准考号。现在我知道准考号类似"C-700"。现在我需要知道准考号和后台数据库表的细节的可能范围。我尝试了一些SQL注入,并获得了一些信息,这是一个SQL Server服务器,数据库字段名是roll_no,并且返回了结果集。不幸的是,返回的不是学生姓名的结果集,所以不能在里面找到她的名字:(不管怎样,我写了一个Python脚本,利用HTTPpost请求,下载了准考号从C-109到C-708的所有结果)

以下是一个python爱好者的分享:

 1     #@author: Heera([email protected])
 2     #note: it assumes all posts on ur date of birth are wishes
 3     #steps to use:
 4     #1. Before running it, u need to take a valid access_token and set date of birth
 5     #2. goto Facebook
 6     #3. click on "Get Acccess token"
 7     #4. mark ‘read_stream‘, ‘publish_stream‘ permissions and click on get access token
 8     #5. now copy the access token and put in the variable named ‘acces_token‘
 9     #6. put ur date of birth in varible dob in format ‘YYYY-MM-DD‘
10     #7. now run the script
11     #8. happy b‘day and enjoy :)
12     import httplib, urllib
13     from bs4 import BeautifulSoup
14     import os
15     import json
16     import time
17     import calendar
18
19     #put access_token here
20     access_token=‘ABACEdEose0cBABnHFHoDhGozFNQ76ntIWwUESZCtnrfg7lIFmMr5qPbH82EHozYXNgX6ZBrFbZB65Na    lOVHldbeNlsswuCVGjWdn8oVZBCs9ZCXDb5ppioUfsreiHRZCC16XOYAEZCTPC8tI1blkbuyvU6uZC0DxgvJvLEFr5b108V4PZAH0eab    yfDWtxg339nMjSan87X2OIahR1A0AXRmZA06rod0ubdr2JvvodaDDvULgZDZF‘
21     #date of birth here, example: ‘2013-04-24‘
22     dob=‘2013-04-24‘
23     conn = httplib.HTTPSConnection("Page on Facebook")
24     print ‘requesting...‘
25     #conn.request("GET",path,urllib.urlencode(data),{})
26     has_more=False
27     defconvert_to_local(s):
28         t=time.strptime(s[:19],"%Y-%m-%dT%H:%M:%S")
29         t=time.localtime(calendar.timegm(t))
30         t=time.strftime("%Y-%m-%d",t)
31         return t
32
33     defgetRandomThnx(msg):
34         #TODO :P
35         return ‘thanks :)‘
36     defprocess_posts(url):
37         conn = httplib.HTTPSConnection("Page on Facebook")
38         conn.request("GET",url)
39         res = conn.getresponse()
40         conn.getresponse
41         data=res.read()
42         res_obj=json.loads(data)
43         posts=res_obj["data"]
44         processed=0
45         for post in posts:
46             if not "message" in post:
47                 continue
48             msg=post["message"]
49             post_date=convert_to_local(post["created_time"])
50             if dob == post_date:
51                 if "from" in post and "message" in post:
52                     user= post["from"]["name"]
53
54
55                     path=‘/‘+post[‘id‘]+‘/comments‘
56                     param_data={  ‘format‘:‘json‘,
57                             ‘message‘:getRandomThnx(msg),
58                             ‘access_token‘:access_token
59                           }
60                     conn = httplib.HTTPSConnection("Page on Facebook")
61                     if post["comments"]["count"]==0:
62                         print ‘responding to :‘+user+‘->‘+msg
63                         conn.request("POST",path,urllib.urlencode(param_data),{})
64                         res = conn.getresponse()
65                     path=‘/‘+post[‘id‘]+‘/likes‘
66                     param_data={  ‘format‘:‘json‘,
67                             ‘access_token‘:access_token
68                           }
69
70                     conn = httplib.HTTPSConnection("Page on Facebook")
71                     processed+=1
72
73         if "paging" in res_obj:
74             return processed+process_posts(res_obj["paging"]["next"][len("Page on page on Facebook"):])
75         else:
76             print "Finished"
77             return processed
78     url=‘/me/feed?access_token=‘+access_token
79     print ‘total=‘+str(process_posts(url))
80     print ‘Thanx to all wisher :)‘

---------------------------------------------------------------End-------------------------------------------------------------------------------

                        看完本文有收获?请转发分享给更多的人

        皆有居 ∣不定期更新

    

          关注「皆有居」,get新技能

时间: 2024-10-23 13:32:28

再续脚本情缘的相关文章

初识Scrapy之再续火影情缘

前言Scrapy框架之初窥门径1 Scrapy简介2 Scrapy安装3 Scrapy基础31 创建项目32 Shell分析4 Scrapy程序编写41 Spiders程序测试42 Items编写43 Settings编写44 Comic_spider编写45 Pipelines编写运行结果总结1 前言 如果有人问我,你最喜欢的动漫是什么?我会毫不犹豫地告诉他:<火影忍者>.因为,这是唯一的一部贯穿我小学.初中.高中.大学.研究生生活的动漫.小学五年级的时候,家里的电视安装了机顶盒,那时候的动

使用 Bootstrap 和 HTML5 Boilerplate 开始一个项目再续

前情提要 使用 Bootstrap 和 HTML5 Boilerplate 开始一个项目 使用 Bootstrap 和 HTML5 Boilerplate 开始一个项目续 在前面,我创建了一个简单的首页,但是现在遇到问题了,我不能满足于 Bootstrap 的默认样式,希望能够根据自己的需求来定义样式,所以,为了能够愉快地修改样式,我需要先来理解一下基本的 Less 语法,更多详细资料可以参考官网 Less 是一个 CSS 预处理器,使用类似于 CSS 的语法,对 CSS 做了很多改进,不过,最

DOS批处理脚本

先概述一下批处理是个什么东东.批处理的定义,至今我也没能给出一个合适的----众多高手们也都没给出----反正我不知道----看了我也不一定信服----我是个菜鸟,当然就更不用说了:但我想总结出一个"比较合适的",而且我也相信自己可以把它解释的很清楚,让更多的菜鸟都知道这是个什么东东,你用这个东东可以干什么事情.或许你会因为这篇文章而"无条件爱上批处理",那么我的目的就达到了----我就是要让你爱上它,我就这么拽,你能怎么着??真的,爱有时候就这么拽,就是这么没理由

【HTML5】用脚本控制交互元素details元素的使用

1.源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Con

AD 脚本kixtart运用之三(添加windows共享打印机)

在http://windyma.blog.51cto.com/661702/1967027文章,已做好用户脚本基础上 在脚本文件kixtart.kix里添加如下内容: --------------------------------------- IF INGROUP ("Color_Printer") If AddPrinterConnection ("\\zsprinter.nccn.int\NEO-Color-Printer") = 0 ? "Add

WEB页面,WEB环境版本,数据库,整站备份脚本

#!/bin/bash # #WEB页面,WEB环境版本,数据库,整站备份脚本 #当发生某个原因导致整个服务器无法恢复时,利用上面备份的相关数据即可重做一台一样的服务器 date_a=`date +%Y%m%d-%H%M%S` mkdir -p /web_bak/${date_a}/conf &> /dev/null mkdir -p /web_bak/${date_a}/web &> /dev/null mkdir -p /web_bak/${date_a}/mysql &a

windows PAC脚本解析的软件 pac syntax检查

参考文档: https://zhuanlan.zhihu.com/p/22166179?refer=barretlee https://github.com/pacparser/pacparser https://community.mcafee.com/thread/47557?tstart=0 动态在线检查网页测试i: http://home.thorsen.pm/proxyforurl 安装步骤参考: 环境(centos6.7 python环境默认2.6 2.7 都可以) https://

20.5 Shell脚本中的逻辑判断;20.6 文件目录属性判断;20.7 if特殊用法;20.8 20.9 cace判断(上下)

扩展: select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html 20.5 Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 1. 创建if1.sh测试脚本: [[email protected] ~]# vi if1.sh a=5,如果a大于3,满足这个条件,显示ok 添加内容: #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi 2. 执行if1.sh脚本: [[e

20.1 Shell脚本介绍;20.2 Shell脚本结构和执行;20.3 date命令用法;20.4 Shell脚本中的变量

20.1 Shell脚本介绍 1. shell是一种脚本语言 aming_linux blog.lishiming.net 2. 可以使用逻辑判断.循环等语法 3. 可以自定义函数 4. shell是系统命令的集合 5. shell脚本可以实现自动化运维,能大大增加我们的运维效率 20.2 Shell脚本结构和执行 1. 开头(首行)需要加: #!/bin/bash 2. 以#开头的行作为解释说明: 3. 脚本的名字以.sh结尾,用于区分这是一个shell脚本 4. 执行.sh脚本方法有两种: