主要实现基础的淘宝登陆搜索及购买。
利用selenium + chrome,当然,这个还有以下两个问题:
1. 不够稳定,还有些细节可以做
2. 没封装
先实现流程吧
from selenium import webdriver from selenium.webdriver.common.keys import Keys import time def login(driver, account, password): #登陆 driver.find_element_by_css_selector('div.site-nav-sign a.h').click() time.sleep(3) js = 'document.getElementById("J_Quick2Static").click()' driver.execute_script(js) driver.find_element_by_id('TPL_username_1').send_keys(account) time.sleep(1) driver.find_element_by_id('TPL_password_1').send_keys(password) time.sleep(2) try: driver.find_element_by_id('J_SubmitStatic').click() except: print('账号或密码错误!') pass time.sleep(3) return driver def search_buy(driver, keyword, first_handle): #搜索购买 elem = driver.find_element_by_id('q') elem.send_keys(keyword) elem.send_keys(Keys.RETURN) time.sleep(2) #购买第一个商品 elem2 = driver.find_elements_by_css_selector('a.J_ClickStat')[1] elem2.click() time.sleep(1) all_handles = driver.window_handles #print(all_handles) for handle in all_handles: if handle == first_handle: pass else: print(handle) driver.switch_to.window(handle) driver.find_element_by_id('J_LinkBuy').click() time.sleep(2) return driver def num_for_charge(driver, num): #输入充值手机号 driver.find_element_by_id('pAccount').send_keys(num) time.sleep(1) driver.find_element_by_id('rpAccount').send_keys(num) time.sleep(1) try: driver.find_element_by_id('J_PerformSubmit').click() except: print("手机号码不对") pass time.sleep(3) return driver def make_payment(driver, paypwd): #输入支付宝密码支付 driver.find_element_by_id('payPwd').send_keys(paypwd) time.sleep(1) driver.find_element_by_id('payPwdConfirm').send_keys(paypwd) time.sleep(1) driver.find_element_by_id('J-submit').click() time.sleep(1) driver.quit() return print('finish!') if __name__ == '__main__': url = 'https://www.taobao.com/' driver = webdriver.Chrome() driver.get(url) drivers = login(driver, "账户名", "密码") first_handle = driver.current_window_handle drivers = search_buy(drivers,"移动充值", first_handle) drivers = num_for_charge(drivers, "充值手机号") make_payment(drivers, "付款密码")