还在为注册不上sssb的房子发愁么
bug请提交至 http://code.google.com/p/sssbbot/
修改代码最后一行 改成自己的sssb帐号 密码 想住的地方 房子类型 房租上限
ex: book_engine = Sssb("P8001011","123456","Kungshamra","Student room","4000 kr")
如果用的是chrome的话 http://code.google.com/p/chromium/downloads/list 下载一个对应的webdriver 解压缩扔到path底下
其他浏览器 根据自己用的浏览器修改第20行 具体参见http://seleniumhq.org/docs/03_webdriver.html#introducing-webdriver-s-drivers
(如果想在注册成功后收到一封mail 修改第75 76行 填上自己的gmail邮箱用户名 密码 地址 然后删掉87行的#)
运行之前
-- ubuntu用户
先保证自己机子上python的版本是2.x
sudo apt-get install python-setuptools python-pip
sudo pip install selenium
--win用户和mac用户
请自己琢磨怎么装python和selenium库 或向男友或基友求助 (虽然其实很想说mac用户去屎的 呵呵)
--android和ios用户
貌似2.x支持这两个平台的浏览器了 欢迎一切小白鼠....
-----------------------------------------
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from random import uniform
import time, re, smtplib
class Sssb:
def __init__(self, login_username, login_password, search_area="All", search_type="All", search_rent="All"):
self.login_username = login_username
self.login_password = login_password
self.search_area = search_area
self.search_type = search_type
self.search_rent = search_rent
self.setUp()
self.sssbMatch()
self.sssbCatch()
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(0)
self.base_url = "http://www.sssb.se/"
self.verificationErrors = []
def sssbLogin(self):
driver = self.driver
driver.get(self.base_url + "/index.php?page=login_eng")
ranstr = re.findall('[a-z0-9]{6}feu', driver.page_source)[0]
driver.find_element_by_id(ranstr+"_input_username").clear()
driver.find_element_by_id(ranstr+"_input_username").send_keys(self.login_username)
driver.find_element_by_name(ranstr+"_input_password").clear()
driver.find_element_by_name(ranstr+"_input_password").send_keys(self.login_password)
driver.find_element_by_id(ranstr+"_btn_login").click()
def sssbLogout(self):
driver = self.driver
driver.get(self.base_url + "/index.php?page=min_sida_eng")
driver.find_element_by_xpath("//img[@src='images/buttons/btn_logout.gif']/..").click()
def sssbSearch(self):
driver = self.driver
driver.get(self.base_url + "/index.php?page=sok_ledigt_eng")
Select(driver.find_element_by_name("_id9:_id11")).select_by_visible_text(self.search_area)
Select(driver.find_element_by_name("_id9:_id15")).select_by_visible_text(self.search_type)
Select(driver.find_element_by_name("_id9:_id21")).select_by_visible_text(self.search_rent)
Select(driver.find_element_by_name("_id9:_id33")).select_by_visible_text("Show All")
driver.find_element_by_id("_id9:_id38").click()
def sssbMatch(self):
driver = self.driver
self.sssbSearch()
while 1:
if len(driver.find_elements(By.XPATH, "//img[@src='/images/f2k/ico_fastaccess.gif']")) == 0:
time.sleep(uniform(3,5))
driver.find_element_by_id("_id9:_id38").click()
else:
break
def sssbBook(self, chosen_one):
driver = self.driver
driver.find_element_by_xpath(chosen_one).click()
driver.find_element_by_id("_id58:_id60").click()
driver.find_element_by_name("_id5:frmAccepted").click()
driver.find_element_by_id("_id5:_id28").click()
def sssbUnbook(self):
driver = self.driver
driver.get(self.base_url + "/index.php?page=min_kosida_eng")
driver.find_element_by_xpath("//a[@id='_id9:0:_id10:tabort']/b").click()
def mail_notice(self):
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login('mail_username', 'mail_password')
server.sendmail('mail_address', 'mail_address', 'booked a last minute room in %s' % self.search_area)
server.quit()
def tearDown(self):
self.driver.quit()
def sssbCatch(self):
self.sssbLogin()
self.sssbSearch()
self.sssbBook("//img[@src='/images/f2k/ico_fastaccess.gif']/../../td[4]/a")
self.sssbLogout()
# self.mail_notice()
self.tearDown()
if __name__ == "__main__":
book_engine = Sssb("sssb_username","sssb_password","sssb_area","sssb_room_type","sssb_rent_limit")
修改代码最后一行 改成自己的sssb帐号 密码 想住的地方 房子类型 房租上限
ex: book_engine = Sssb("P8001011","123456","Kungshamra","Student room","4000 kr")
如果用的是chrome的话 http://code.google.com/p/chromium/downloads/list 下载一个对应的webdriver 解压缩扔到path底下
其他浏览器 根据自己用的浏览器修改第20行 具体参见http://seleniumhq.org/docs/03_webdriver.html#introducing-webdriver-s-drivers
(如果想在注册成功后收到一封mail 修改第75 76行 填上自己的gmail邮箱用户名 密码 地址 然后删掉87行的#)
运行之前
-- ubuntu用户
先保证自己机子上python的版本是2.x
sudo apt-get install python-setuptools python-pip
sudo pip install selenium
--win用户和mac用户
请自己琢磨怎么装python和selenium库 或向男友或基友求助 (虽然其实很想说mac用户去屎的 呵呵)
--android和ios用户
貌似2.x支持这两个平台的浏览器了 欢迎一切小白鼠....
-----------------------------------------
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from random import uniform
import time, re, smtplib
class Sssb:
def __init__(self, login_username, login_password, search_area="All", search_type="All", search_rent="All"):
self.login_username = login_username
self.login_password = login_password
self.search_area = search_area
self.search_type = search_type
self.search_rent = search_rent
self.setUp()
self.sssbMatch()
self.sssbCatch()
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(0)
self.base_url = "http://www.sssb.se/"
self.verificationErrors = []
def sssbLogin(self):
driver = self.driver
driver.get(self.base_url + "/index.php?page=login_eng")
ranstr = re.findall('[a-z0-9]{6}feu', driver.page_source)[0]
driver.find_element_by_id(ranstr+"_input_username").clear()
driver.find_element_by_id(ranstr+"_input_username").send_keys(self.login_username)
driver.find_element_by_name(ranstr+"_input_password").clear()
driver.find_element_by_name(ranstr+"_input_password").send_keys(self.login_password)
driver.find_element_by_id(ranstr+"_btn_login").click()
def sssbLogout(self):
driver = self.driver
driver.get(self.base_url + "/index.php?page=min_sida_eng")
driver.find_element_by_xpath("//img[@src='images/buttons/btn_logout.gif']/..").click()
def sssbSearch(self):
driver = self.driver
driver.get(self.base_url + "/index.php?page=sok_ledigt_eng")
Select(driver.find_element_by_name("_id9:_id11")).select_by_visible_text(self.search_area)
Select(driver.find_element_by_name("_id9:_id15")).select_by_visible_text(self.search_type)
Select(driver.find_element_by_name("_id9:_id21")).select_by_visible_text(self.search_rent)
Select(driver.find_element_by_name("_id9:_id33")).select_by_visible_text("Show All")
driver.find_element_by_id("_id9:_id38").click()
def sssbMatch(self):
driver = self.driver
self.sssbSearch()
while 1:
if len(driver.find_elements(By.XPATH, "//img[@src='/images/f2k/ico_fastaccess.gif']")) == 0:
time.sleep(uniform(3,5))
driver.find_element_by_id("_id9:_id38").click()
else:
break
def sssbBook(self, chosen_one):
driver = self.driver
driver.find_element_by_xpath(chosen_one).click()
driver.find_element_by_id("_id58:_id60").click()
driver.find_element_by_name("_id5:frmAccepted").click()
driver.find_element_by_id("_id5:_id28").click()
def sssbUnbook(self):
driver = self.driver
driver.get(self.base_url + "/index.php?page=min_kosida_eng")
driver.find_element_by_xpath("//a[@id='_id9:0:_id10:tabort']/b").click()
def mail_notice(self):
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login('mail_username', 'mail_password')
server.sendmail('mail_address', 'mail_address', 'booked a last minute room in %s' % self.search_area)
server.quit()
def tearDown(self):
self.driver.quit()
def sssbCatch(self):
self.sssbLogin()
self.sssbSearch()
self.sssbBook("//img[@src='/images/f2k/ico_fastaccess.gif']/../../td[4]/a")
self.sssbLogout()
# self.mail_notice()
self.tearDown()
if __name__ == "__main__":
book_engine = Sssb("sssb_username","sssb_password","sssb_area","sssb_room_type","sssb_rent_limit")