zoukankan      html  css  js  c++  java
  • Selenium实例

    1. 模拟登陆

    import time
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    
    class Douban():
        def __init__(self):
            self.url = "https://www.douban.com/"
            path = r"C:UsersyangzaigangDownloadschromedriver_win32chromedriver.exe"
            self.driver = webdriver.Chrome(path)
    
        def log_in(self):
            self.driver.get(self.url)
            time.sleep(3)  # 睡3分钟,等待页面加载
            self.driver.save_screenshot("0.jpg")
            # 输入账号
            self.driver.find_element_by_xpath('//*[@id="form_email"]').send_keys("xxxxx@qq.com")
            # 输入密码
            self.driver.find_element_by_xpath('//*[@id="form_password"]').send_keys("xxxx")
            # 点击登陆
            self.driver.find_element_by_class_name("bn-submit").click()
            time.sleep(2)
            self.driver.save_screenshot("douban.jpg")
            # 输出登陆之后的cookies
            print(self.driver.get_cookies())
    
        def __del__(self):
            '''调用内建的稀构方法,在程序退出的时候自动调用
            类似的还可以在文件打开的时候调用close,数据库链接的断开
            '''
            self.driver.quit()
    
    
    if __name__ == "__main__":
        douban = Douban()  # 实例化
        douban.log_in()  # 之后调用登陆方法
    

    2. 执行JavaScript

    from selenium import webdriver
    
    # 后面是你的浏览器驱动位置,记得前面加r'','r'是防止字符转义的
    path = r"C:UsersyangzaigangDownloadschromedriver_win32chromedriver.exe"
    driver = webdriver.Chrome(path)
    driver.get("https://www.baidu.com/")
    
    # 给搜索输入框标红的javascript脚本
    js = "var q=document.getElementById("kw");q.style.border="2px solid red";"
    
    # 调用给搜索输入框标红js脚本
    driver.execute_script(js)
    
    #查看页面快照
    driver.save_screenshot("redbaidu.png")
    
    #js隐藏元素,将获取的图片元素隐藏
    img = driver.find_element_by_xpath("//*[@id='lg']/img")
    driver.execute_script('$(arguments[0]).fadeOut()',img)
    
    # 向下滚动到页面底部
    driver.execute_script("$('.scroll_top').click(function(){$('html,body').animate({scrollTop: '0px'}, 800);});")
    
    #查看页面快照
    driver.save_screenshot("nullbaidu.png")
    
    driver.quit()
    

    3. 动态页面模拟点击

    # 爬取斗鱼直播平台的所有房间信息
    from selenium import webdriver
    import json
    import time
    class Douyu:
        # 1.发送首页的请求
        def __init__(self):
            self.driver = webdriver.PhantomJS()
            self.driver.get("https://www.douyu.com/directory/all") #请求首页
     
        #获取没页面内容
        def get_content(self):
            time.sleep(3) #每次发送完请求等待三秒,等待页面加载完成
            li_list = self.driver.find_elements_by_xpath('//ul[@id="live-list-contentbox"]/li')
            contents = []
            for i in li_list: #遍历房间列表
                item = {}
                item["img"] = i.find_element_by_xpath("./a//img").get_attribute("src") #获取房间图片
                item["title"] = i.find_element_by_xpath("./a").get_attribute("title") #获取房间名字
                item["category"] = i.find_element_by_xpath("./a/div[@class='mes']/div/span").text #获取房间分类
                item["name"] = i.find_element_by_xpath("./a/div[@class='mes']/p/span[1]").text #获取主播名字
                item["watch_num"] = i.find_element_by_xpath("./a/div[@class='mes']/p/span[2]").text #获取观看人数
                print(item)
                contents.append(item)
            return contents
        #保存本地
        def save_content(self,contents):
            f = open("douyu.txt","a")
            for content in contents:
                json.dump(content,f,ensure_ascii=False,indent=2)
                f.write("
    ")
            f.close()
     
        def run(self):
            #1.发送首页的请求
            #2.获取第一页的信息
            contents = self.get_content()
                #保存内容
            self.save_content(contents)
            #3.循环  点击下一页按钮,知道下一页对应的class名字不再是"shark-pager-next"
            while self.driver.find_element_by_class_name("shark-pager-next"): #判断有没有下一页
                #点击下一页的按钮
                self.driver.find_element_by_class_name("shark-pager-next").click() #
                # 4.继续获取下一页的内容
                contents = self.get_content()
                #4.1.保存内容
                self.save_content(contents)
     
    if __name__ == "__main__":
        douyu = Douyu()
        douyu.run()
    

      

  • 相关阅读:
    图片一句话木马简单制作方法
    kali各工具使用介绍
    隐写工具zsteg安装及使用教程
    内网渗透中mimikatz的使用
    kali meterpreter中mimikatz模块获取密码
    一个恐怖份子上传了这张照片到社交网络。里面藏了什么信息?
    攻防世界MISC进阶之签到题
    EMC存储重装系统分区丢失恢复方法
    服务器数据迁移方法
    教您分辨U盘不能识别是哪儿坏了
  • 原文地址:https://www.cnblogs.com/yzg-14/p/12203716.html
Copyright © 2011-2022 走看看