python3 chromedriver模拟登录获得cookies

# -*- coding:utf-8 -*-
import json
import time


from pyvirtualdisplay import Display
import schedule
from selenium import webdriver
import requests
from selenium.webdriver import ActionChains
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.chrome.options import Options
options = webdriver.ChromeOptions()
display = Display(visible=0, size=(800, 600))
display.start()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

chrome_drive = '/usr/bin/chromedriver'
url = "https://cas.admore.com.cn/login?service=https%3A%2F%2Fadwords.admore.com.cn%2F"
driver = webdriver.Chrome(executable_path=chrome_drive, chrome_options=options)


def get():
    print(12345678)
    print(12345678)
    print(12345678)
    print(12345678)
    time.sleep(10)
    driver.get("https://adwords.admore.com/main")
    print(1111,driver.page_source)
    cookies = driver.get_cookies()
    print(cookies)
    if len(cookies)==6:
        print(cookies)
        with open("shike_cokkies.txt", "w") as f:
            json.dump(cookies, f)
    #    return driver
    else:
        print(987654321)
        driver.set_page_load_timeout(10)
        driver.get(url)
        time.sleep(5)
        print("asdfgh")
        name_input = driver.find_element_by_id('username')  # 找到用户名的框框
        pass_input = driver.find_element_by_id('userInputPassword')  # 找到输入密码的框框
        login_button = driver.find_element_by_xpath('//*[@id="checkFormInput"]/input[4]')
        # action2 = driver.find_element_by_name("login")
        # ActionChains(driver).move_to_element(name_input)
        name_input.clear()
        time.sleep(1)
        # time.sleep(5)
        name_input.send_keys('账号')  # 填写用户名
        pass_input.clear()
        # ActionChains(driver).move_to_element(pass_input)
        time.sleep(1)
        pass_input.send_keys('密码')  # 填写密码
        # time.sleep(5)
        # js = "window.scrollTo(0,document.body.scrollHeight)"
        # driver.execute_script(js)
        # ActionChains(driver).move_to_element(login_button)
        login_button.click()
        # WebDriverWait(driver, 300000000).until_not(lambda x: x.find_element_by_class_name("hot-item ng-binding ng-scope").is_displayed())  # 等待直到登录成功
        # print(34556)
        # second_logng = driver.find_element_by_class_name("pull-right login")
        # ActionChains(driver).move_to_element(action2).click(action2).perform()
        # second_logng.click()
        # driver.get("https://adwords.admore.com/main")
        # sedssion = driver.get_cookie("SESSION")
        time.sleep(1)
        driver.find_element_by_xpath("/html/body/div[2]/div/div/div/div/div[2]/div[3]/a").click()
        # AGL_USER_ID = driver.get_cookie("AGL_USER_ID")
        # driver.find_element_by_xpath("//*[@id="myHeader"]/div[3]/div[1]/div/div[2]/a[2]")
        driver.get("https://adwords.admore.com/main")
        # print(driver.page_source)
        # ddict = {}
        # print(driver.get_cookies())
        # print(sedssion,AGL_USER_ID)
        cokies_list = []
        if '账户总览' in driver.page_source:
            print("登录成功!")
            cokies_list = driver.get_cookies()
            print(cokies_list)
        else:
            print("结束")
        #driver.quit()
        with open("shike_cokkies.txt","w") as f:
            json.dump(cokies_list,f)
    #display.stop()
#schedule.every().day.at("00:30").do(get)
#schedule.every().day.at("12:00").do(get)
##schedule.every().day.at("22:00").do(get)
schedule.every().hour.do(get)
while True:
    schedule.run_pending()
    time.sleep(3)
#for i in range(2):
    #get()
#get()

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Python实现京东自动登录通常涉及网络爬虫技术和模拟浏览器操作,特别是当京东采用了验证码等防爬机制时,任务会更复杂。以下是一个简化的步骤: 1. **库准备**: - 导入必要的库,如`requests`, `BeautifulSoup`用于HTTP请求和HTML解析,`selenium`或`webdriver_manager`用于处理JavaScript渲染和浏览器操作。 ```python import requests from bs4 import BeautifulSoup from selenium import webdriver ``` 2. **获取Cookie**: - 首先需要登录到京东官网,然后查看开发者工具中的Cookies信息。其中`JSESSIONID`可能是关键的登录凭证。 3. **构造登录请求**: - 如果有用户名、密码和cookie,可以尝试构建登录POST请求,并携带相关cookies。 ```python login_url = 'https://passport.jd.com/new/login.aspx' data = { 'username': 'your_username', 'password': 'your_password', # 还需要添加其他可能的表单字段,如rememberMe、captcha_code... } headers = {'Referer': login_url, 'Cookie': 'your_cookies'} with requests.Session() as s: response = s.post(login_url, data=data, headers=headers) ``` 4. **使用Selenium**(如果有验证码): - 如果网站使用了验证码,可以考虑使用Selenium启动一个实际的浏览器实例来输入验证码。例如,使用ChromeDriver: ```python options = webdriver.ChromeOptions() driver = webdriver.Chrome(options=options) driver.get(login_url) # 点击验证码图片,等待用户输入后提交 # driver.find_element_by_id('captchaImage').click() # user填写验证码后,执行submit操作 # driver.find_element_by_id('captchaCode').send_keys('your_captcha') driver.quit() ``` 5. **验证登录状态**: - 登录成功后,可以在新的页面上检查是否设置了登录后的cookie或session。 6. **后续操作**: - 现在你可以使用这个Session对象进行其他的京东网页抓取或数据交互。 注意:这只是一个基本的框架,实际情况可能会因为京东的反爬策略而变化,可能需要定期更新或处理动态加载的内容。同时,遵守京东和相关法律法规是非常重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值