首页 > 代码库 > 再续脚本情缘

再续脚本情缘

翻译自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(heera.jaiswal810@gmail.com) 
 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=http://www.mamicode.com/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=http://www.mamicode.com/{ 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=http://www.mamicode.com/{ 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新技能

再续脚本情缘