一、driver.get_cookies
driver.get_cookies()方法返回当前网站的所有cookie,我们可以将其保存下来,在下次打开该网站时使用:
from selenium import webdriver import pickle driver = webdriver.Chrome() driver.get('http://www.baidu.com') # 获取cookie pickle.dump(driver.get_cookies(), open('baidu_cookies.pkl', 'wb')) driver.quit() # 加载cookie driver = webdriver.Chrome() driver.get('http://www.baidu.com') cookies = pickle.load(open('baidu_cookies.pkl', 'rb')) for cookie in cookies: driver.add_cookie(cookie) driver.get('http://www.baidu.com')
二、driver.net作用
driver.net可以访问一些网站直接展示出来的API(例如新浪微博的API),通过这些API,我们可以获取到网站中的一些数据,但是一些API可能需要登录后才可以使用,此时需要添加cookie。
三、driver.net传递参数
driver.net方法中可以传递一些参数,例如header。
from selenium import webdriver import requests driver = webdriver.Chrome() driver.get('http://www.baidu.com') cookies = driver.get_cookies() cookie_dict = {item['name']:item['value'] for item in cookies} headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3', 'Cookie': ';'.join([name + '=' + value for name, value in cookie_dict.items()]) } url = 'https://www.baidu.com/' response = requests.get(url, headers=headers) print(response.status_code)
四、driver.get()
driver.get()方法的本质是向浏览器发送GET请求,并等待响应返回。该方法会阻塞程序,直到网页加载完成。
五、driver.get(url)
driver.get(url)方法的本质和driver.get()一样,只不过url需要传入方法参数中。
from selenium import webdriver driver = webdriver.Chrome() driver.get('http://www.baidu.com')
六、driver.get前后两次
我们可以使用driver.get()方法多次访问同一个网站,例如:
from selenium import webdriver driver = webdriver.Chrome() driver.get('http://www.baidu.com') driver.get('http://www.baidu.com')
上述代码访问了两次百度,实际上第二次访问时,我们可以获得缓存在浏览器中的一些数据,例如页面上的input框内容、浏览器cookie等。
七、driver.get打开2个窗口
我们可以用driver.get()方法打开两个不同的窗口,并在两个不同的窗口上运行操作,例如:
from selenium import webdriver driver = webdriver.Chrome() driver.get('http://www.baidu.com') # 打开新窗口 driver.execute_script("window.open('http://www.sina.com')") driver.switch_to.window(driver.window_handles[-1]) print(driver.current_url) # 切换回原来的窗口 driver.switch_to.window(driver.window_handles[0]) print(driver.current_url)
八、driver.get(url)用法
driver.get(url)方法中的url可以是绝对路径或相对路径。
from selenium import webdriver import os chromedriver = "D:\chromedriver\chromedriver.exe" os.environ["webdriver.chrome.driver"] = chromedriver driver = webdriver.Chrome(chromedriver) # 打开绝对路径 file_path = 'file:///' + os.path.abspath('test.html') driver.get(file_path) # 打开相对路径 driver.get('test.html')
九、driver.get为什么会空白网页
通常出现空白网页的原因为:网页响应过于缓慢或者网页存在一些异步加载数据并未加载完全。
十、driver.get(url)打不开网页
如果driver.get(url)方法打不开网页,可以检查以下问题:
1、网络是否连接正常
2、网站是否已经关闭
3、网站是否限制国内IP访问
4、网站的DNS解析是否成功
若以上问题都排除了,可以尝试使用代理服务器再次访问。