您的位置:

深入理解driver.get方法

一、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解析是否成功

若以上问题都排除了,可以尝试使用代理服务器再次访问。