工作笔记2——利用selenium完成对网站上的数据爬取
读取配置文件
因为有时候我们的代码中往往需要一些配置参数,如需要连接的ftp的服务器地址,用户名和密码等,当我们换一个ftp时,则只需改配置文件即可,不用再去代码中改,比较方便。python中有很方便的模块能够进行配置文件的读取,如configparser模块,它的使用方法详见此链接。
我使用的时候该模块名称变为configparser,有些出入,估计是版本更新问题,但里面的函数都能正常使用。
import configparser
# 读取配置文件
cf=configparser.ConfigParser()
cf.read(".\config\\settings.ini")
cf.sections()
server = cf.get("ftp", "server")
user = cf.get("ftp", "user")
pwd = cf.get("ftp", "pwd")
filepath = cf.get("ftp", "filepath")
利用profile保存用户名和密码
当我们需要处理使用用户名和密码登录的时候,虽然可以使用selenium中的sendkeys,但是这样用户名和密码就会暴露在代码中,或者说我们定位不到弹出来的Windows原生登录框,其实我们还可以使用一种方法,那就是利用火狐浏览器的profile文件存储我们的用户名和密码(前提是先开启浏览器登陆一次,并点击保存用户名和密码),步骤如下(或参考链接):
- 首先关闭所有已经打开的firefox浏览器
- cd到Mozilla Firefox文件夹下,输入firefox -p命令
- 在弹出的Firefox choose user profile对话框中点击create profile
- 选择此新profile文件需要保存的路径,并命名
- 点击start firefox,利用该profile启动新firefox
- 输入需要浏览的网址,输入用户名和密码后,点击保存用户名和密码
- 之后利用该profile文件便可不用输入用户名和密码就能登录了
# 设置profile
profile = webdriver.FirefoxProfile("YOUR_PROFILE_PATH")
# 设置默认下载路径
profile.set_preference("browser.download.dir", os.getcwd() + "\downloads")
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.helperApps.neverAsk.saveToDisk",
"application/octet-stream, application/vnd.ms-excel, text/csv, application/zip")
# 利用该profile开启Firefox浏览器
self.driver = webdriver.Firefox(profile)
鼠标悬停显示二级菜单,再点击二级菜单或下拉列表
参见此链接
下拉菜单的定位
参见此链接
selenium根据文本信息定位元素
参见此链接