动态加载的网页需要使用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()#关闭模拟浏览器窗口

其他常用的函数和属性

python常用模块 pdf python常用模块 selenium等_css

python常用模块 pdf python常用模块 selenium等_python_02

模拟键鼠操作

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