自动登录抽屉网

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.maximize_window()

try:
    driver.get('https://dig.chouti.com/')
    driver.implicitly_wait(10)
    time.sleep()

    login_bin = driver.find_element_by_id('login_btn')
    login_bin.click()
    time.sleep(2)

    phone = driver.find_element_by_class_name('login-phone')
    phone.send_keys('17718268511')

    pwd = driver.find_element_by_class_name('pwd-password-imput')
    pwd.send_keys('tututu')

    login_submit = driver.find_element_by_class_name('btn-large')
    login_submit.click()
    time.sleep(20)

#捕获异常并打印
except Exception as e:
    print(e)

finally:
    driver.close()

selenuim选择器之Xpath

from selenium import webdriver

driver = webdriver.Chrome()

try:
    driver.get('https://doc.scrapy.org/en/latest/_static/selectors-sample1.html')
    driver.implicitly_wait(5)

    根据Xpath语法查找元素
    /从根节点开始找第一个
    html = driver.find_element_by_xpath('/html')
    print(html.tag_name)

    #//从根节点找任意一个节点
    div = driver.find_element_by_xpath('//div')
    print(div.tag_name)


    #@
    #查找id为images的div节点
    div = driver.find_element_by_xpath('//div[@id="images"]')
    print(div.tag_name)
    print(div.text)

    #找到一个a节点
    a = driver.find_element_by_xpath('//a')
    print(a.tag_name)

    #找到所有a节点
    a_s = driver.find_elements_by_xpath('//a')
    print(a_s)

    #找到第一个a节点的href属性
    a = driver.find_element_by_xpath('//a').get_attribute('href')
    print(a)

finally:
    driver.close()


    找到所有a节点


'''

添加cookie
'''
from selenium import webdriver
driver = webdriver.Chrome()
import time



try:
    driver.implicitly_wait(10)
    driver.get('https://www.zhihu.com/explore')
    print(driver.get_cookie())

    time.sleep(10)


finally:
    driver.close()



'''
#
# 选项卡
#
# '''

import time
from selenium import webdriver

browser = webdriver.Chrome()

try:
    browser.get('https://')



finally:
    browser.close()



'''
前进、后退
'''
from selenium import webdriver
import time

driver = webdriver.Chrome()


try:
    driver.implicitly_wait(10)
    driver.get('https://www.jd.com/')
    driver.get('https://www.baidu.com/')
    driver.get('https://www.cnblogs.com/')

    time.sleep(2)

    # 回退操作
    driver.back()
    time.sleep(1)
    # 前进操作
    driver.forward()
    time.sleep(1)
    driver.back()
    time.sleep(10)

finally:
    driver.close()

selenium剩余操作

''''''
'''
点击、清除操作
'''
# from selenium import webdriver
# from selenium.webdriver.common.keys import Keys
# import time
#
# driver = webdriver.Chrome(r'D:\BaiduNetdiskDownload\chromedriver_win32\chromedriver.exe')
#
# try:
#     driver.implicitly_wait(10)
#     # 1、往jd发送请求
#     driver.get('https://www.jd.com/')
#     # 找到输入框输入围城
#     input_tag = driver.find_element_by_id('key')
#     input_tag.send_keys('围城')
#     # 键盘回车
#     input_tag.send_keys(Keys.ENTER)
#     time.sleep(2)
#     # 找到输入框输入墨菲定律
#     input_tag = driver.find_element_by_id('key')
#     input_tag.clear()
#     input_tag.send_keys('墨菲定律')
#     # 找到搜索按钮点击搜索
#     button = driver.find_element_by_class_name('button')
#     button.click()
#     time.sleep(10)
#
# finally:
#     driver.close()


'''
获取cookies  (了解)
'''
# from selenium import webdriver
# import time
#
# driver = webdriver.Chrome(r'D:\BaiduNetdiskDownload\chromedriver_win32\chromedriver.exe')
#
# try:
#     driver.implicitly_wait(10)
#     driver.get('https://www.zhihu.com/explore')
#     print(driver.get_cookies())
#
#     time.sleep(10)
# finally:
#     driver.close()

'''
选项卡
'''
#选项卡管理:切换选项卡,有js的方式windows.open,有windows快捷键:
# ctrl+t等,最通用的就是js的方式
# import time
# from selenium import webdriver
#
# browser = webdriver.Chrome()
# try:
#     browser.get('https://www.baidu.com')
#
#     # execute_script: 执行javascrpit代码
#     # 弹窗操作
#     # browser.execute_script('alert("tank")')
#     # 新建浏览器窗口
#     browser.execute_script(
#         '''
#         window.open();
#         '''
#     )
#     time.sleep(1)
#     print(browser.window_handles)  # 获取所有的选项卡
#     # 切换到第二个窗口
#     # 新:
#     browser.switch_to.window(browser.window_handles[1])
#     # 旧:
#     # browser.switch_to_window(browser.window_handles[1])
#
#     # 第二个窗口往淘宝发送请求
#     browser.get('https://www.taobao.com')
#     time.sleep(5)
#
#     # 切换到第一个窗口
#     browser.switch_to_window(browser.window_handles[0])
#     browser.get('https://www.sina.com.cn')
#
#     time.sleep(10)
# finally:
#     browser.close()


'''
ActionChangs动作链
'''
# from selenium import webdriver
# from selenium.webdriver import ActionChains
# import time
#
# driver = webdriver.Chrome()
# driver.implicitly_wait(10)
# driver.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
#
# try:
#
#     # driver.switch_to_frame('iframeResult')
#     # 切换到id为iframeResult的窗口内
#     driver.switch_to.frame('iframeResult')
#
#     # 源位置
#     draggable = driver.find_element_by_id('draggable')
#
#     # 目标位置
#     droppable = driver.find_element_by_id('droppable')
#
#     # 调用ActionChains,必须把驱动对象传进去
#     # 得到一个动作链对象,复制给一个变量
#     actions = ActionChains(driver)
#
#     # 方式一: 机器人
#     # 瞬间把源图片位置秒移到目标图片位置
#     # actions.drag_and_drop(draggable, droppable)  # 编写一个行为
#     # actions.perform()  # 执行编写好的行为
#
#
#     # 方式二: 模拟人的行为
#     source = draggable.location['x']
#     target = droppable.location['x']
#     print(source, target)
#
#     distance = target - source
#     print(distance)
#
#     # perform:每个动作都要调用perform执行
#
#     # 点击并摁住源图片
#     ActionChains(driver).click_and_hold(draggable).perform()
#
#     s = 0
#     while s < distance:
#         # 执行位移操作
#         ActionChains(driver).move_by_offset(xoffset=2, yoffset=0).perform()
#         s += 2
#
#     # 释放动作链
#     ActionChains(driver).release().perform()
#
#     time.sleep(10)
#
#
# finally:
#     driver.close()


'''
前进、后退
'''
# from selenium import webdriver
# import time
#
# driver = webdriver.Chrome()
#
# try:
#     driver.implicitly_wait(10)
#     driver.get('https://www.jd.com/')
#     driver.get('https://www.baidu.com/')
#     driver.get('https://www.cnblogs.com/')
#
#     time.sleep(2)
#
#     # 回退操作
#     driver.back()
#     time.sleep(1)
#     # 前进操作
#     driver.forward()
#     time.sleep(1)
#     driver.back()
#     time.sleep(10)
#
# finally:
#     driver.close()

破解登录

from selenium import webdriver
from selenium.webdriver import ChromeOptions
import time
r'''
步骤:
    1、打开文件的查看,显示隐藏文件
    2、找到C:\Users\administortra\AppData\Local\Google\Chrome\User Data
        删除Default文件
    3、重新打开浏览器,并登陆百度账号
        - 此时会创建一个新的Default缓存文件
    4、添加cookies
    5、关闭谷歌浏览器后执行程序
'''
# 获取options对象,参数对象
options = ChromeOptions()

# 获取cookies保存路径
# 'C:\Users\administortra\AppData\Local\Google\Chrome\User Data'
profile_directory = r'--user-data-dir=C:\Users\administortra\AppData\Local\Google\Chrome\User Data'

# 添加用户信息目录
options.add_argument(profile_directory)

# 把参数加载到当前驱动中  chrome_options默认参数,用来接收options对象
driver = webdriver.Chrome(chrome_options=options)

try:
    driver.implicitly_wait(10)
    driver.get('https://www.baidu.com/')
    '''
    BDUSS:*****
    '''
    # 添加用户cookies信息
    # name、value必须小写
    driver.add_cookie({"name": "BDUSS", "value": "用户session字符串"})

    # 刷新操作
    driver.refresh()

    time.sleep(10)

finally:
    driver.close()

爬取京东商品信息

# '''
# 爬取京东商品信息
#
# 请求url:
#     https://www.jd.com/
# 提取商品信息:
#     1.商品详情页
#     2.商品名称
#     3.商品价格
#     4.商品评价人数
#     5.商品商家
# '''
#
# from selenium import webdriver
# from selenium.webdriver.common.keys import Keys
# import time
#
# driver = webdriver.Chrome()
# try:
#     driver.implicitly_wait(10)
#     #1.往京东发送请求
#     driver.get('https://wwww.jd.com/')
#
#     #2.输入商品名称,并回车搜索
#     input_tag = driver.find_element_by_id('key')
#     input_tag.send_keys('macbook')
#     input_tag.send_keys(Keys.ENTER)
#
#     #3.查找所有商品div
#     good_list = driver.find_elements_by_class_name('gl-item')
#
#     for good in good_list:
#         #根据属性选择器查找
#         #商品链接
#         good_url = good.find_element_by_css_selector(
#             '.p-img a'
#         ).get_attribute('href')
#
#         #商品名称
#         good_name = good.find_element_by_css_selector(
#             '.p-name em').text.replace("\n","--")
#
#         # 商品价格
#         good_price = good.find_element_by_class_name(
#             'p-price').text.replace("\n", ":")
#
#         # 评价人数
#         good_commit = good.find_element_by_class_name(
#             'p-commit').text.replace("\n", " ")
#
#         # 商品商家
#         good_from = good.find_element_by_class_name(
#             'J_im_icon').text.replace("\n", " ")
#
#         good_content = f'''
#                         商品链接:{good_url}
#                         商品名称:{good_name}
#                         商品价格:{good_price}
#                         评价人数:{good_commit}
#                         商品商家:{good_from}
#                         '''
#         print(good_content)
#     time.sleep(10)
#
#
# finally:
#
#     driver.close()



'''

爬取全部

'''


'''
爬取京东商品信息

请求url:
    https://www.jd.com/
提取商品信息:
    1.商品详情页
    2.商品名称
    3.商品价格
    4.商品评价人数
    5.商品商家
'''

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

def get_good(driver):
    try:

        #通过js控制滚轮滑动获取所有商品信息
        js_code = '''
                window.scrollTo(0,5000);
        '''
        driver.execute_script(js_code)#执行js代码

        #等待数据加载
        time.sleep(2)

        #3.查找所有商品div
        good_list = driver.find_elements_by_class_name('gl-item')

        for good in good_list:
            #根据属性选择器查找
            #商品链接
            good_url = good.find_element_by_css_selector(
                '.p-img a'
            ).get_attribute('href')

            #商品名称
            good_name = good.find_element_by_css_selector(
                '.p-name em').text.replace("\n","--")

            # 商品价格
            good_price = good.find_element_by_class_name(
                'p-price').text.replace("\n", ":")

            # 评价人数
            good_commit = good.find_element_by_class_name(
                'p-commit').text.replace("\n", " ")


            good_content = f'''
                            商品链接:{good_url}
                            商品名称:{good_name}
                            商品价格:{good_price}
                            评价人数:{good_commit}
                            '''
            print(good_content)

        next_tag = driver.find_elements_by_class_name('pn-next')
        next_tag.click()

        time.sleep(2)

        #递归函数调用
        get_good(driver)

        time.sleep(10)



    finally:

        driver.close()

if __name__ == '__main__':
    driver = webdriver.Chrome()

    driver.implicitly_wait(10)
    # 1.往京东发送请求
    driver.get('https://wwww.jd.com/')

    # 2.输入商品名称,并回车搜索
    input_tag = driver.find_element_by_id('key')
    input_tag.send_keys('macbook')
    input_tag.send_keys(Keys.ENTER)
    time.sleep(2)

    get_good(driver)