Selenium

为了Selenium方法的成功使用,必须保证ChromeDriver安装版本与Chrome版本匹配。当然你也可以使用其它浏览器,个人选择。

这是ChromeDriver的镜像下载地址,更新浏览器后记得更新ChromeDriver,顺便我个人记录一下,我的ChromeDriver装在C:\Program Files (x86)\Google\Chrome\Application

注意:

1、上文中的镜像已停止更新,现在只能从ChromeDriver官方站点进行下载

2、此外ChromeDriver不仅要放到\Chrome\Application下,还有可能需要放到python路径下:D:\Program Files\Anaconda3

主要流程讲解

1、控制开启浏览器

from selenium.webdriver import Chrome, ChromeOptions # 导入类库
option = ChromeOptions() # 初始化类
option.add_experimental_option("excludeSwitches", ['enable-automation', 'enable-logging']) # 添加参数
driver = Chrome(options=option)  # 模拟开浏览器
driver.get('https://m.xiaozhu.com/#') # 跳转网址
myDriver.maximize_window()  # 最大化窗口
driver.title  # 如果成功打印title则说明接管成功

2、获取对应元素

driver.find_elements_by_class_name('list_con') # 通过class的方式获取,也可以使用其他方式
find_elements(By.XPATH,"//*[contains(@href, 'pdf')]").get_attribute('href')

selenium更新后,之前的获取元素的方式发生了改变,主要差异为引入了By,其他的参数直接点开By查看即可

同样可以使用Xpath获取元素,语法为//节点名[starts-with(@元素名, "相同部分")]

3、处理元素数据

我习惯于使用BeatifulSoup处理,当然也可以使用selenium套件处理,等有空我再学习一下补上

4、设置等待

5、托管指定端口的浏览器

对于知乎这种网站,使用selenium控制开启一个浏览器往往会被识别,所以需要我们配置一个浏览器(进行登录等常规操作)后,再使用代码直接托管,具体流程如下:

  • 将Chrome发送到桌面快捷方式,并设置其端口和缓存文件路径

    image-20221129193010882

    目标处填入“程序路径 端口设置 文件路径”,具体如下

  • 使用Python接管浏览器

最后更新于