python - chrome 驱动程序无头选项不适用于链接?
问题描述
--headless 选项不适用于某些我不知道为什么的链接,但适用于其他链接。需要无头是我必须在必须需要无头方法(无 GUI)的 AWS 实例上运行此爬虫。链接 = https://shop.nordstrom.com/s/pj-salvage-animal-lover-pajama-top- plus-size/5405170/full?origin=category-personalizedsort&breadcrumb=Home%2FWomen%2Fclothing&color=charcoal
使用无头选项
#for head less approch
options = Options()
options.binary_location = "/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
options = Options()
options.add_argument("start-maximized")
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument("--hide-scrollbars")
options.add_argument("disable-infobars")
options.add_argument('--disable-dev-shm-usage')
options.add_argument("window-size=1920,1080")
prefs = {
"translate_whitelists": {"fr": "en", "de": "en", 'it': 'en', 'no': 'en', 'es': 'en', 'sv': 'en', 'nl': 'en',
'da': 'en', 'pl': 'en', 'fi': 'en', 'cs': 'en'},
"translate": {"enabled": "true"}
}
options.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(options=options)
#################################################################################
driver = webdriver.Chrome(options=options)
解决方案
作为 chromedriver 的最新版本(在 ChromeDriver 79.0.3945.16 之后)修复了在无头模式下无法点击的问题元素。
下载最新版本的chromedriver。希望您的问题能得到解决。
这是变更日志
修复了在命令执行期间触发 javascript 警报导致的 ChromeDriver 崩溃
修复了导致 Chromedriver 在截屏时触发警报时锁定的错误
从 Chrome 启动命令中删除 --ignore-certificate-errors 在 Win10 上将平台和平台名称更改为 windows
修复了排除“启用自动化”时未定义的 window.navigator.webdriver
修复了 WPT 测试“test_not_editable_inputs[hidden]”
修复了使用无头模式时的“元素不可点击”
Chromedriver 更新日志和下载链接 https://chromedriver.chromium.org/downloads
已编辑 对于 aws 您需要按照以下步骤操作
首先,您需要使用以下步骤安装 chrome
sudo curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add
sudo echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
sudo apt-get -y update
sudo apt-get -y install google-chrome-stable
然后下载chromedriver
wget https://chromedriver.storage.googleapis.com/index.html?path=79.0.3945.16/
unzip chromedriver_linux64.zip
现在添加权限并移动二进制文件
sudo mv chromedriver /usr/bin/chromedriver
sudo chown root:root /usr/bin/chromedriver
sudo chmod +x /usr/bin/chromedriver
要打开 chrome,请更改二进制路径options.binary_location
并添加参数options.add_argument('--headless')
注意:不要忘记安装java
推荐阅读
- javascript - 将 Angular 1 Promise ($q) 导入节点
- android - 方法通道在 Flutter 模块中不起作用
- android - 我的 View Pager Adapter 中的 instantiateItem() 是如何工作的?
- c - ADS 1.2 C 编译器工具选项
- python - 根据列表大小创建进度条的逻辑是什么?
- c# - CA1065 不要在意外位置引发异常,如何解决?
- mysql - 将分隔符与 Aurora Serverless MySQL 5.6 一起使用时出现语法错误
- php - 数据库未通过 ajax 更新
- c# - LinkedIn OAuth 失败并显示 https_required 错误消息
- netbeans - 下载 NetBeans 时出现问题