我正试图在页面中找到损坏的链接。我正在使用此代码: (我不会显示原始URL和元素ID数据,因为它是机密信息,而我正在使用显式等待,因为它需要先登录才能访问页面)
import requests
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_argument('disable-infobars')
driver=webdriver.Chrome(chrome_options=options,
executable_path='C:\\Chromedriver\\chromedriver.exe')
driver.get('https://pagename.com')
WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.ID,
'elementID')))
links = driver.find_elements_by_css_selector("a")
for link in links:
r = requests.head(link.get_attribute('href'))
print(link.get_attribute('href'), r.status_code)
问题是此代码适用于大多数页面。但是,我正在使用的页面的href中没有完整的URL,只有'/ extension'。所以我得到了 requests.exceptions.MissingSchema:无效的网址“无”:未提供任何架构。也许您是说http://None?错误,并且我对将URL与href结合起来感到不安。如何在循环中使用带有href的URL将其加入?
答案 0 :(得分:0)
“ +”串联运算符可以工作。
baseURL = "https://domainName.com/resource/"
for link in links:
r = requests.head(link.get_attribute('href'))
actualURL=baseURL + link.get_attribute('href')
答案 1 :(得分:0)
尝试
r = requests.head("https://pagename.com/"+link.get_attribute('href'));
print(("https://pagename.com/"+link.get_attribute('href')), r.status_code)