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