思路:
- 通过selenium + chrome浏览器模拟登陆
- 注意项:切换登陆框架
(这里我先假设你已经安装好了模拟浏览器的环境了,配置好运行需要的环境了)
进入登陆login_url = "https://i.qq.com/"
browser = webdriver.Chrome()
browser.get(login_url)
- *特别注意:登陆后一定要切换到登陆框架,不然通过查找规则将找不到找到相关按钮
browser.switch_to.frame(browser.find_element_by_xpath('//iframe[@id="login_frame"]'))
登陆模块代码:
def Login(UserName,PassWd):
'''
return browser
'''
browser = webdriver.Chrome()
browser.get(login_url)
browser.switch_to.frame(browser.find_element_by_xpath('//iframe[@id="login_frame"]'))
time.sleep(1)
l_btn01 = browser.find_element_by_xpath('//*[@id="switcher_plogin"]').click()
time.sleep(1)
browser.find_element_by_xpath("//input[@id='u']").send_keys(UserName)
time.sleep(1)
browser.find_element_by_xpath('//input[@id="p"]').send_keys(PassWd)
time.sleep(1)
browser.find_element_by_xpath('//input[@class="btn"]').click()
time.sleep(1)
browser.switch_to_default_content() # 切出
time.sleep(9)
return browser
获得Cookies函数:
- 注意
- browser.get_cookies()还回的是如下结构的字典列表,我们需要提取自己需要的key-value拼接成Cookies
- [{'domain': '.qq.com', 'expiry': 21473xxxx, 'httpOnly': False, 'name': 'pgv_pvi', 'path': '/', 'secure': False, 'value': '178xxxx'}]
- cookie_items: =>name ,values
def get_cookies(browser):
cookie_items = browser.get_cookies()
print(cookie_items)
post={}
for cookie_item in cookie_items:
post[cookie_item['name']] = cookie_item['value']
cookies_dict_str = json.dumps(post)
cookies_dict = eval(cookies_dict_str)
cookie_str = ""
for key in cookies_dict:
value = cookies_dict[key]
str1 = key + "=" + value
cookie_str =cookie_str + str1 + ";"
return cookie_str
至此,我们便可到常见的cookies