提问人:ArturY 提问时间:8/20/2020 最后编辑:Norayr SargsyanArturY 更新时间:12/7/2022 访问量:10627
使用带有 Selenium 的 webdriver 拒绝访问网站
Access denied to website using webdriver with Selenium
问:
我甚至对使用“webdriver Chrome”的开放网站也有问题。仅尝试打开网站以“拒绝访问”信息结尾,并且不知道为什么。 以下是我的代码:
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time
class PriceCheckPhoenix:
def __init__(self):
self.url_login = "https://www.phoenixcontact.com/online/portal/pl?1dmy&urile=wcm%3apath%3a/plpl/web/home"
self.create_session()
def create_session(self):
# Run browser with webdriver
driver = webdriver.Chrome(executable_path="D:/chromedriver_v84.exe")
driver.get(self.url_login)
time.sleep(2)
# Find link to sub-website with login
link = driver.find_element_by_xpath('//*[@id="pxc-funcnav"]/div[3]/ul/li[1]/a').get_attribute("href")
driver.get(link)
time.sleep(100)
代码说明:
#1 我创建浏览器 chrome 会话
#2 从 self.url_login 加载第一个网站
#3 已加载
#4 我需要在网站上的活动文本后面找到一个链接才能登录
#5 我找到了它并尝试打开它,但获得链接后的响应是:
Access Denied
You don't have permission to access
"http://www.phoenixcontact.com/online/portal/pl/pxc/offcontext/login/!ut/p/z1/tZJNa4NAEIZ_Sw45yszuuro9WkO1xqY2EqN7EbXGWPzYFDGlv74Gcio0oYTMZRgY3mcYHpAQg-yysa6yoe67rJnmRBqpu4zownzixDEYx2cWmIYTeYgrHSKQIFVRv0MieJZTZEITglFNLwTXRPaw03RGC6Qm10nOTttFN6hhD4lqVDPHY5nPcd-3JSQTy0ypQ5C4Onl5XUcmvgXCttzNWo-WCNuxLo-w6frPdjot_CfZxWsEciPhSjy7a7xN7xt_63M8kJdNmlSrPw4HaU2G9N1Qfg0Q_1Zke4JeiPHIeQH_KAshVE0a-GkQ24EPqm0F41WbLh5XWuKN3-fm78KgsmazH7dw0Ts!/dz/d5/L0lJSklKQ2dwUkEhIS9JRGpBQUF4QUFFUkNwcVlxLzRObEdRb1lwTWhUalVFZyEvWjZfR0FMNjE0ODI4RzNEQzBJMklPMlA2OTFHMDMvWjdfR0FMNjE0ODI4RzNEQzBJMklPMlA2OTFHSTcvdGFyZ2V0Vmlldy9sb2dpbg!!/" on this server.
Reference #18.d58655f.1597921471.5b29112
有谁知道这里出了什么问题?:(当我尝试从普通Chrome浏览器中的链接加载网站时,一切都很好:/ 谢谢大家的帮助。
答:
8赞
Swaroop Humane
8/20/2020
#1
请尝试以下代码,让我知道它是否适合您:-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time
options = Options()
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Safari/537.36'
options.add_argument('user-agent={0}'.format(user_agent))
driver = webdriver.Chrome(options=options)
wait = WebDriverWait(driver, 20)
action = ActionChains(driver)
driver.get("https://www.phoenixcontact.com/online/portal/pl?1dmy&urile=wcm%3apath%3a/plpl/web/home")
Login_Btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//*[@class='pxc-fn-login']/a")))
action.move_to_element(Login_Btn).click().perform()
注意 - 请相应地对代码进行更改。
评论
0赞
ArturY
8/21/2020
嘿,谢谢你的回答,是的,我明白了,这很好。我知道这个“按钮”的背后还有更多的东西,一些脚本,而不仅仅是这个 URL 可以获取和打开?:(我的代码和你的代码之间的差异是这样的,你使用类似“鼠标点击”的东西?脚本尝试在网站上查找对象,然后像鼠标一样单击但没有移动光标?但是谢谢你的回答,工作正常:o :)
0赞
William
12/7/2022
#2
谷歌搜索把我带到了这里。在尝试了几个选项之后。未检测到的 Chromedriver 带有一个非常简单的脚本,没有任何选项对我有用。
import undetected_chromedriver as uc
driver = uc.Chrome()
driver.get(<url here>)
评论