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:\Users\yangzaigang\Downloads\chromedriver_win32\chromedriver.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() # 之后调用登陆方法
from selenium import webdriver # 后面是你的浏览器驱动位置,记得前面加r‘‘,‘r‘是防止字符转义的 path = r"C:\Users\yangzaigang\Downloads\chromedriver_win32\chromedriver.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()
# 爬取斗鱼直播平台的所有房间信息 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("\n") 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()
原文:https://www.cnblogs.com/yzg-14/p/12203716.html