-headless选项不适用于某些链接,我不知道为什么通过处理其他链接 我需要在没有实例的情况下在AWS实例上运行此爬网程序。 link = 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)
答案 0 :(得分:1)
作为最新版本的chromedriver( ChromeDriver 79.0.3945.16 之后)修复了在无头模式下无法单击的问题元素。
下载最新版本的chromedriver。希望您的问题得到解决。
这是变更日志
修复了在执行命令期间触发javascript警报导致的ChromeDriver崩溃
修复了导致警报触发时Chromedriver锁定的错误 截屏
从Chrome启动命令中删除了--ignore-certificate-errors 在Win10上将platform和platformName更改为Windows
在“启用自动化”时修复了未定义的window.navigator.webdriver 被排除
修复了WPT测试“ test_not_editable_inputs [hidden]”
修复了使用无头模式时“元素不可点击”的问题
Chromedriver更改日志和下载链接 https://chromedriver.chromium.org/downloads
已编辑 对于aws,您需要执行以下步骤
首先,您需要按照以下步骤安装chrome
Function TaskKill(sTaskName)
TaskKill = CreateObject("WScript.Shell").Run("taskkill /f /im " & sTaskName, 0, True)
End Function
然后下载chromedriver
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
现在添加权限并移动二进制文件
wget https://chromedriver.storage.googleapis.com/index.html?path=79.0.3945.16/
unzip chromedriver_linux64.zip
要打开chrome,请更改二进制路径sudo mv chromedriver /usr/bin/chromedriver
sudo chown root:root /usr/bin/chromedriver
sudo chmod +x /usr/bin/chromedriver
并添加参数options.binary_location
注意:不要忘记安装Java
答案 1 :(得分:0)
经过大量搜索后,我注意到那些首先发送JS代码的网站在打开无头参数方面存在问题,因此我想出了使用virtualDisplay ..
的解决方案。在终端或Windows cmd或Power-shell中运行此命令以安装此命令
pip install PyVirtualDisplay
这是您需要在代码中放入的代码
from pyvirtualdisplay import Display
display = Display(visible=0, size=(800, 600))
display.start()
最后编写代码后
display.stop()