from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
import bs4
import time
def login(url,username,password):
‘’’
用于登录微博 :param url:微博的登录接口 :param username: 用户名 :param password: 密码 :return: cookie
‘’’ #browser = webdriver.Chrome() #用谷歌浏览器实验 browser = webdriver.PhantomJS(“E:/phantomjs-2.1.1-windows/bin/phantomjs.exe”) #用PhantomJS
browser.maximize_window() #设置窗体为最大,如果没有这一行,表单可能无法操作
browser.get(url) #打开登陆用的网页
print(“开始登陆”)
username_ele = browser.find_element_by_id(“loginname”) #找到用于输入用户名的表格
username_ele.clear() #清空表格
username_ele.send_keys(username) #输入账户
password_ele = browser.find_element_by_name(“password”) #找到用于输入密码的表格
password_ele.clear() #清空表格
password_ele.send_keys(password) #输入密码
submit = browser.find_element_by_xpath(‘//*[@id=“pl_login_form”]/div/div[3]/div[6]/a/span’) #找到用于提交表单的类型为submit的input
submit.click() #点击
time.sleep(5)
WebDriverWait(browser, 10).until(expected_conditions.presence_of_element_located((By.CLASS_NAME, ‘WB_miniblog’))) #等待登陆页面加载完成
if is_ele_exist(browser,“loginname”):
print(“登录失败”)
browser.quit()
return None
print(“登陆成功”)
#return print(browser.get_cookies()
return browser #返回获得的cookie
def is_ele_exist(browser,id):
‘’’
根据一个id判断当前页面元素是否存在,find方法没有找到元素会抛出异常,利用异常判断元素是否存在 :param browser: 浏览器 :param id: 元素id :return: 存在返回True,不存在返回False
‘’’ try:
s = browser.find_element_by_class_name(id)
return True
except:
return False