如何在 chrome 无头模式下启动网站以阻止无头模式?

问题描述 投票:0回答:2

请在下面找到我用来从 Myntra 网站抓取价格的 XPATH。我可以从除 Myntra 之外的所有其他网站进行抓取,并且下面的 XPATH 正在我的本地 Windows 系统中使用 Selenium、Python3 版本并使用 chrome 驱动程序工作。

司机路线:

driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver", options=chrome_options);

变量名称 =

driver.find_element_by_xpath('//*[@id="mountRoot"]/div/div/div/main/div[2]/div[2]/div[1]/p[1]/span/strong').text

参考链接:https://www.myntra.com/beauty-gift-set/kama-ayurveda/kama-ayurveda-round-the-clock-skincare-gift-set/12800176/buy

托管到 EC2 ubuntu 机器时出现以下错误: 消息:没有这样的元素:无法定位元素:{“method”:“xpath”,“selector”:“//*[@id =“mountRoot”]/div/div/div/main/div[2] /div[2]/div[1]/p[1]/span/strong"}

尝试像

driver.find_element_by_xpath('//*[@class="pdp-price"]//*').text
那样更改XPATH,但没有运气。

css python-3.x selenium-webdriver web-scraping xpath
2个回答
1
投票

使用下面的XPath

driver.find_element_by_xpath('//span[@class="pdp-price"]//strong').text

或者使用下面的 CSS 选择器

driver.find_element_by_css_selector('.pdp-price strong').text

以上仅在站点处于 GUI 模式时才有效,而对于无头显示器,访问被拒绝,附在下面的屏幕截图中供您参考。由于应用程序阻止无头模式

enter image description here

添加以下用户代理参数并将网络驱动程序加载到您的 Chrome 驱动程序选项中

chrome_options.add_argument('--no-sandbox') 
chrome_options.add_argument("--headless")
chrome_options.add_argument(f'user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36')

0
投票

只需在启动 headless chrome 时添加此用户代理选项: --user-agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36(KHTML,如 Gecko)Chrome/91.0.4472.114 Safari/537.36"

chromeLauncher.launch({
    chromeFlags: ["--headless", '--disable-gpu', `--user-agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"`],
    chromePath: '/usr/bin/google-chrome'
})
© www.soinside.com 2019 - 2024. All rights reserved.