前言
最近公司要求登录小红书广告后台去下载一个 Excel
文件,并将内容导入到自有管理后台。由于没有对应的 API
接口,就考虑使用 Selenium
完成该需求。
这里记录下一些点,以便之后使用。
配置
配置代理
脚本放在云服务器定时去执行,发现云服务器的 IP
无法完成登录操作。故在公司内网搭建一个代理服务器,使用路由器自带的 DDNS
功能映射到外网。Selenium
配置代理后就可以正常完成操作了。
Firefox 90
版本开始移除对FTP协议的支持。
1
2
3
4
5
6
7
8
|
from selenium import webdriver
PROXY = "<HOST:PORT>"
webdriver.DesiredCapabilities.FIREFOX['proxy'] = {
"httpProxy": PROXY,
"sslProxy": PROXY,
"proxyType": "MANUAL",
}
|
启用无头模式
1
2
3
4
|
from selenium.webdriver.firefox.options import Options
options = Options()
options.headless = True
|
自定义 User-Agent
1
2
3
|
options.set_preference(
"general.useragent.override", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:104.0) Gecko/20100101 Firefox/104.0"
)
|
自定义下载目录
通过指定MIME
类型的文件直接保存。
1
2
3
4
5
6
7
8
9
10
11
12
|
# 三个值:0代表桌面,1代表 Downloads 文件夹,2代表最后指定下载的文件夹
options.set_preference("browser.download.folderList", 2)
# 指定 /tmp 为下载存放目录
options.set_preference("browser.download.dir", "/tmp")
# 不询问存放目录,将文件下载到 browser.download.folderList 指定的目录
options.set_preference("browser.download.useDownloadDir", True)
# 下载开始时,不显示下载管理窗口
options.set_preference("browser.download.manager.showWhenStarting", False)
# 指定哪些 MIME 类型的文件直接保存到磁盘,不询问什么方式找开文件
options.set_preference(
"browser.helperApps.neverAsk.saveToDisk", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
)
|