动态加载的网页需要使用Selenium模块。Selenium模块可以模拟人在浏览器中的操作。
而Requests模块获取的是未经动态渲染的信息。
Selenium模块可以实现比Requests模块更复杂的操作,但是速度却比其慢很多。
为了使Selenium模块模拟人鼠标键盘的操作,还需要下载和安装浏览器驱动程序。其作用为此模块提供一个模拟浏览器去访问网页。
1.Chrome驱动文件下载:点击下载chromedrive
2.Firefox驱动文件下载:点解下载geckodriver
通过以上链接下载驱动文件后将其放在Python安装路径中的Scripts文件夹中。这样就完成了浏览器驱动程序的安装。
验证是否安装成功:以Firefox为例。打开命令行窗口,输入geckodriver。
使用selenium模块用火狐浏览器打开一个百度网页
from selenium import webdriver
def demo_Func():
browser=webdriver.Firefox()
browser.get('https://www.baidu.com')
启用无界面模式
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
#希望访问网页时不弹出浏览器窗口,可以启用无界面浏览模式,将浏览器转到后台运行而不显示出来
def demo_Func2():
firefox_options=Options()
firefox_options.headless=True
browser=webdriver.Firefox(options=firefox_options)
browser.get('https://www.baidu.com')
data=browser.page_source
print(data)
browser.quit()#关闭模拟浏览器窗口
其他常用的函数和属性
模拟键鼠操作
1.XPath法:
如何获取一个网页元素的XPath?选中一个网页元素右键点击“检查”,从下面跳出的源代码界面中直接复制字段的XPath。
from selenium import webdriver
#实现百度python的模拟操作
def demo_Func3():
browser = webdriver.Firefox()
browser.get('https://www.baidu.com')
#用XPath法定位网页元素的语法格式:browser.find_element_by_xpath('XPath表达式')
#自动在搜索框输入内容
browser.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
#点击搜索按钮
browser.find_element_by_xpath('//*[@id="su"]').click()
2.css_selector法
如何获取一个网页元素的XPath?和XPath获取方式类似,区别是复制css选择器。
from selenium import webdriver
#css_selector法实现百度python的模拟操作
def demo_Func4():
browser = webdriver.Firefox()
browser.get('https://www.baidu.com')
#用css_selector法定位网页元素的语法格式:browser.find_element_by_css_selector('css_selector表达式')
browser.find_element_by_css_selector('#kw').send_keys('python')
browser.find_element_by_css_selector('#su').click()
以上两种方法在本质上是一样的。有时一种方法会失败,而另一种方法有效。
2021.10.01