python--selenium簡單模擬百度搜索點擊器

python--selenium簡單模擬百度搜索點擊器
發佈時間:2018-02-28 來源:網絡 上傳者:用戶
關鍵字: selenium 模擬 簡單 點擊 搜索 百度
發表文章
摘要:用途:簡單模擬用戶點擊百度搜索結果頁,可延展爲點擊競價,SEO做弊等多種功能所需module:selenium,time備註:由於是簡單模擬,因此只是模擬器的雛形,並沒有防做弊機制。僅供參考。#coding=utf-8fromseleniumimportwebdriverimporttimebrowser=webdriver.Firefox()#啓動Firefox瀏覽器url1='http://www.baidu.com/s?wd=馬爾代夫'#馬爾代夫的百度搜索頁url2='h html

用途:簡單模擬用戶點擊百度搜索結果頁,可延展爲點擊競價,SEO做弊等多種功能所需module:selenium,time備註:由於是簡單模擬,因此只是模擬器的雛形,並沒有防做弊機制。僅供參考。#coding=utf-8
from selenium import webdriver
import timebrowser = webdriver.Firefox() # 啓動Firefox瀏覽器
url1 = 'http://www.baidu.com/s?wd=馬爾代夫' # 馬爾代夫的百度搜索頁
url2 = 'http://scrapy.org/' # 測試頁面1
url3 = 'http://news.yahoo.com/air-strike-libyan-city-misrata-clashes-near-oil-135039996.html' # 測試頁面2
browser.get(url1) # 打開頁面
browser.maximize_window() # 瀏覽器窗口最大化
res = browser.find_elements_by_xpath("//h3[@class='t c-gap-bottom-small']") # 使用xpath查找頁面中的h3元素
for r in res: # 頁面中h3元素有多個,因此須要遍歷
t = r.find_element_by_xpath("a") # h3元素下的a標籤
print '%s - %s' % (t.text, type(t.text)) # 打印a標籤的標題以及文本格式
if u'途牛' in t.text: # 判斷標題中是否有途牛,若是有則點擊
print 'yes' # 判斷結果
t.click() # 點擊這個a連接print len(res) # 打印h3標籤的總量
=============================================================================python

 


快速激活碼生成V2
發佈時間:2018-02-28 來源:網絡 上傳者:用戶
關鍵字: 激活 生成 快速
發表文章
摘要:不久以前我發佈了一個激活碼生成的Python代碼 比較簡陋.也有很多朋友給予了回覆和支持 也有朋友提出了意見.今天呢,我把熱心朋友提出的意見整合到了代碼裏.也添加了新功能Title 使激活碼前面幾個字符串保持一致( 便於一些有意思的事情發生 )另外 若是以爲會重複我以爲問題不大.若是是正式部署須要用到個人代碼 你能夠在mysql裏增長一個字段 領取id也好 領取Mail也好.匹配驗證碼的 mysql

不久以前我發佈了一個激活碼生成的Python代碼 比較簡陋.也有很多朋友給予了回覆和支持 也有朋友提出了意見.今天呢,我把熱心朋友提出的意見整合到了代碼裏.也添加了新功能Title 使激活碼前面幾個字符串保持一致( 便於一些有意思的事情發生 )另外 若是以爲會重複我以爲問題不大.若是是正式部署須要用到個人代碼 你能夠在mysql裏增長一個字段 領取id也好 領取Mail也好.匹配驗證碼的時候多增長一個字段的驗證便可. 就算有重複 第二驗證字段不經過 也是不影響的.再想一想 一共由48個字母+10個數字 組成的無序字符串 得多少纔會遇到一個重複的啊? 激活碼長度太小概率會更大.不過激活碼這個東西 14~16位我以爲很好了.
# coding=utf-8
# config 爲配置詞典
# y 是長度 最終生產出來的驗證碼是 長度 = Y - title的長度
# x 是循環次數 生成數量
# title 是激活碼最前固定字符串 留空表明不使用
import string
import random
import MySQLdb
db = MySQLdb.connect("localhost","root","123456","Python")
cursor = db.cursor()
cursor.execute("DROP TABLE IF EXISTS JHM") # 若是有JHM這個數據庫就刪除
cursor.execute(
"""CREATE TABLE JHM(id int(11) primary key AUTO_INCREMENT, jhm CHAR(20) NOT NULL , status CHAR(1) NOT NULL)""")
config = {'y': 10, 'x': 20, 'title':"Dota"}def jhm(num):
b = ''.join(random.sample(string.ascii_letters + string.digits, num))
return bdef sql(w):
try:
cursor.execute(w)
except:
db.rollback()for z in range(config['x']):
w ="INSERT INTO JHM(jhm,status)VALUES ('%s','%s')"% (
config['title'] + jhm(config['y'] - len(config['title'])), '0')
sql(w)
db.commit()
db.close()
==============================================================git


文件結構扁平化
發佈時間:2018-02-28 來源:網絡 上傳者:用戶
關鍵字: 扁平化 結構 文件
發表文章
摘要:azure的存儲是一種扁平化結構也就是說,在容器中沒有路徑,全部的所有爲文件,那麼對於系統中嵌套的文件夾要保持原結構,應該怎麼辦呢?例如:尼古拉喜歡對一切看到的東西進行分類。 有一次,斯蒂芬送了他一個標籤機做爲他的生日禮物, 機器人把在船上的每一個面的標籤撕了幾個星期。 從那時起,他歸類在他的實驗室的全部試劑, 圖書館的書和在桌子上筆記。 但後來他得知 python 字典,並分類全部索菲亞的機器人的可能的配置 web

azure的存儲是一種扁平化結構也就是說,在容器中沒有路徑,全部的所有爲文件,那麼對於系統中嵌套的文件夾要保持原結構,應該怎麼辦呢?例如:尼古拉喜歡對一切看到的東西進行分類。 有一次,斯蒂芬送了他一個標籤機做爲他的生日禮物, 機器人把在船上的每一個面的標籤撕了幾個星期。 從那時起,他歸類在他的實驗室的全部試劑, 圖書館的書和在桌子上筆記。 但後來他得知 python 字典,並分類全部索菲亞的機器人的可能的配置。 如今,這些文件被組織在一個很深的嵌套結構, 但索菲亞並不喜歡這樣。讓咱們幫助索菲亞扁平化這些字典。Python字典是一種能夠用來方便地存儲和處理配置的數據類型。它容許你經過鍵來建立嵌套結構來存儲數據。您將獲得一個字典,其中的鍵是字符串,值是字符串或字典。咱們的目標是使字典扁平化,但保存的結構中的鍵。其結果應該是一個字典沒有嵌套的字典。鍵應包含原來的字典中的父鍵的路徑。在路徑中的鍵是由以「/」分開。若是值是一個空的字典,那麼它應該由一個空字符串("")所取代。讓咱們來看一個例子:{ "name": { "first": "One", "last": "Drone" }, "job": "scout", "recent": {}, "additional": { "place": { "zone": "1", "cell": "2"} }}其結果將是:{"name/first": "One", #one parent "name/last": "Drone", "job": "scout", #root key "recent": "", #empty dict "additional/place/zone": "1", #third level "additional/place/cell": "2"}
def flatten(dictionary):
stack = [((), dictionary)]
result = {}
while stack:
path, current = stack.pop()
if not current:
result["/".join((path ))] =""
for k, v in current.items():
if isinstance(v, dict):
stack.append((path + (k,), v))
else:
result["/".join((path + (k,)))] = v
return result
=========================================================ajax


風行網vip電影播放地址解析
發佈時間:2018-02-28 來源:網絡 上傳者:用戶
關鍵字: 風行 解析 地址 播放 電影 VIP
發表文章
摘要:經過http請求分析,獲取視頻最終的cdn播放地址,也就是一個mp4視頻。vip電影想看就看,你懂的。僅用於學習交流目的,最長24小時後請刪除^_^#!/usr/bin/evnpython#coding=utf8#author:aliyunzixun@xxx.com#date:2014-12-26importsysimportosimporttimeimporturllib2importcStringIO,gzipimportlxml.htmlimportreimportjs sql

經過http請求分析,獲取視頻最終的cdn播放地址,也就是一個mp4視頻。vip電影想看就看,你懂的。僅用於學習交流目的,最長24小時後請刪除^_^
#!/usr/bin/evn python
#coding=utf8
#author:aliyunzixun@xxx.com
#date:2014-12-26
import sys
import os
import time
import urllib2
import cStringIO, gzip
import lxml.html
import re
import json
import random
def createRequest(url, referer = None):
req = urllib2.Request(
urllib2.quote(url.split('#')[0].encode('utf8'), safe ="%/:=&;?~#+!$,;'@()*[]"),
headers = {"Accept":"application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
"Accept-Charset":"GBK,utf-8;q=0.7,*;q=0.3",
"Accept-Encoding":"gzip",
"Accept-Language":"zh-CN,zh;q=0.8",
"Cache-Control":"max-age=0",
"Connection":"keep-alive",
"User-Agent":"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2",
})
if referer is not None:
req.add_header('Referer', referer)
return req
def getContent(url, referer = None):
f = urllib2.urlopen(createRequest(url, referer), timeout = 15)
data = f.read()
if data[:6] == 'x1fx8bx08x00x00x00':
data = gzip.GzipFile(fileobj = cStringIO.StringIO(data)).read()
f.close()
return data
def getCdnUrl(apiUrl, referer = None):
content = getContent(apiUrl, referer)
data = json.loads(content)
token = data['token']
for resource in data['fsps']:
fspUrl = resource['url']
if resource['clarity'] == 'super-dvd':
fspUrl = resource['url']
fsp = re.findall("fsp://(w+)", fspUrl)[0]
if fsp == '':
return None
else:
timestamp = int(time.time())
cdnUrl = 'http://jobsfe.funshion.com/query/v1/mp4/{0}.json?clifz=fun&;mac=&;tm={1}&;token={2}'.format(fsp, timestamp, token)
return cdnUrl
def getPlayUrl(cdnUrl, referer = None):
content = getContent(cdnUrl, referer)
data = json.loads(content)
if data['return'] == 'succ':
playUrls = data['playlist'][0]['urls']
return playUrls[random.randint(0, len(playUrls)-1)]
return None
if __name__ == '__main__':
if len(sys.argv) < 2 or sys.argv[1].startswith('http') is None:
print 'Usage: python fun.py http://www.fun.tv/vplay/m-115946/'
print 'Please input the url to be parse'
sys.exit()
videoUrl = sys.argv[1]
vid = int(re.findall("vplay/m-(d+)", videoUrl)[0])
apiUrl = 'http://api.fun.tv/ajax/get_webplayinfo/{0}/1/mp4?user=funshion'.format(vid)
cdnUrl = getCdnUrl(apiUrl, videoUrl)
playUrl = getPlayUrl(cdnUrl, videoUrl)
print playUrl
=========================數據庫


OSCer 都在幹嗎?
發佈時間:2018-02-28 來源:網絡 上傳者:用戶
關鍵字: OSCer
發表文章
摘要:importrequestsimportlxmlfromlxmlimportetreedefget_content(url):try:headers={'User-Agent':'Mozilla/5.0(WindowsNT6.2;WOW64;rv:37.0)Gecko/20100101Firefox/37.0'}r=requests.get(url,headers=headers)return''+r.content.decode('utf-8')+''exceptExcep
import requests
import lxml
from lxml import etree
def get_content(url):
try:
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0'}
r = requests.get(url, headers = headers)
return '' + r.content.decode('utf-8') + ''
except Exception as exc:
#raise exc
return Noneclass User(object):
pass
def parse_content(content):
if content is None: return []
try:
xml = etree.fromstring(content)
divs= xml.findall('li/div')
page_info = []
for div in divs:
u = User()
tweets = div.findall('p')
if len(tweets) < 2:
continue
user_and_text = list(tweets[0].itertext())
u.name,u.txt = user_and_text if len(user_and_text) == 2 else [None]*2
data_comments = list(tweets[1].itertext())
u.data,u.commtents,u.client = data_comments if len(data_comments) ==3 else [None]*3
u.link = tweets[1].xpath('a')[0].get('href')
page_info.append(u)
return page_info
except Exception as exc:
raise exc
def test():
url ="http://www.oschina.net/fetch_tweets?p=40"
content = get_content(url)
infos = parse_content(content)
for u in infos:
print(u.name)
print(u.txt)
print(u.client.split('n')[1].strip() if u.client else u.client)
#print(u.name, u.txt)
if __name__ == '__main__':
test()
======================================json

批量執行Linux命令或者配置
發佈時間:2018-02-28 來源:網絡 上傳者:用戶
關鍵字: 批量 命令 或者 執行 配置 Linux
發表文章
摘要:Python學習中,寫的很差,請你們見諒。在批量服務器密碼統一的狀況下使用:參數介紹:-u 用戶名-p 密碼-P port-s 要執行的腳本-c 要執行的命令-f 要執行的服務器IP列表指定-s的時候,直接執行腳本,跳過-c#!/bin/envpythonimportparamikoimportsys,osimporttimefromoptparseimportOpti c#

Python學習中,寫的很差,請你們見諒。在批量服務器密碼統一的狀況下使用:參數介紹:-u 用戶名-p 密碼-P port-s 要執行的腳本-c 要執行的命令-f 要執行的服務器IP列表指定-s的時候,直接執行腳本,跳過-c #!/bin/env python import paramiko import sys,os import time from optparse import OptionParser parser = OptionParser(add_help_option=0) parser.add_option("-f","--file", action="store", type="string", dest="listfile",default="") parser.add_option("-u","--user", action="store", type="string", dest="username",default="root") parser.add_option("-p","--passwd", action="store", type="string", dest="password",default="mypass") parser.add_option("-P","--port", action="store", type="string", dest="port",default="22") parser.add_option("-c","--cmd", action="store", type="string", dest="cmdline",default="hostname") parser.add_option("-s","--script", action="store", type="string", dest="script",default="")(options, args) = parser.parse_args() listfile=options.listfile username = options.username passwd = options.password port = options.port rcmd = options.cmdline scriptfile = options.script time_now = time.strftime('%Y%m%d%H%M%S')infofile="log/info.txt" if os.path.isdir("log"): pass else: os.mkdir("log") if os.path.isfile(infofile): os.rename(infofile,infofile+time_now) info = open(infofile,"a") def execmd(host,port,username,passwd,rcmd): #info = open(infofile,"a") try: client = paramiko.SSHClient() #client.load_system_host_keys() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(host,port=int(port),username=username,password=passwd,timeout=1) #rcmd ="ifconfig eth0|grep HWaddr|awk '{print $NF}'" print rcmd stdin, stdout, stderr = client.exec_command(rcmd) #info.write(host+"n"+"@"*20+"n") for line in stdout: info.write("%s: %s"%(host,line)) client.close() except: info.write("%s: SSH Login Faildnn"%(host)) #info.close() def transfile(): try: trans = paramiko.Transport((host,int(port))) trans.connect(username=username,password=passwd) sftp = paramiko.SFTPClient.from_transport(trans) #sftp.get("","") sftp.put(scriptfile,"/tmp/%s"%scriptfile) trans.close() except: #print"File translation faild" info.write("%s: File translation faildn"%(host)) if __name__=="__main__": for ipaddr in open(listfile).readlines(): host = ipaddr.strip("n").rstrip().lstrip() print host if scriptfile =="": pass else: transfile() rcmd="sh /tmp/%s"%scriptfile execmd(host,port,username,passwd,rcmd) info.close() =================================

相關文章
相關標籤/搜索