gpt4 book ai didi

python-3.x - requests.exceptions.MissingSchema : Invalid URL 'None' : No schema supplied while trying to find broken links through Selenium and Python

转载 作者:行者123 更新时间:2023-12-04 13:02:04 26 4
gpt4 key购买 nike

我想使用 Selenium + Python 在我的网页上找到损坏的链接。我尝试了上面的代码,但它显示了以下错误:

requests.exceptions.MissingSchema: Invalid URL 'None': No schema supplied. Perhaps you meant http://None?

代码试验:
for link in links:

r = requests.head(link.get_attribute('href'))
print(link.get_attribute('href'), r.status_code)

完整代码:
def test_lsearch(self):
driver=self.driver
driver.get("http://www.google.com")
driver.set_page_load_timeout(10)
driver.find_element_by_name("q").send_keys("selenium")

driver.set_page_load_timeout(10)
el=driver.find_element_by_name("btnK")
el.click()
time.sleep(5)

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)

最佳答案

这个错误信息...

    raise MissingSchema(error)
requests.exceptions.MissingSchema: Invalid URL 'None': No schema supplied. Perhaps you meant http://None?

...暗示对 unicode 域名和路径的支持在收集的 中失败href 属性。

此错误在 models.py 中定义如下:
    # Support for unicode domain names and paths.
scheme, auth, host, port, path, query, fragment = parse_url(url)
if not scheme:
raise MissingSchema("Invalid URL {0!r}: No schema supplied. "
"Perhaps you meant http://{0}?".format(url))

解决方案

一旦关键字 的搜索结果可用,您可能正在尝试查找损坏的链接。 Selenium Google Home Page Search Box .为此,您可以使用以下解决方案:
  • 代码块:
    import requests
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.keys import Keys

    options = webdriver.ChromeOptions()
    options.add_argument("start-maximized")
    options.add_argument('disable-infobars')
    driver=webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get('https://google.co.in/')
    search = driver.find_element_by_name('q')
    search.send_keys("selenium")
    search.send_keys(Keys.RETURN)
    links = WebDriverWait(driver, 10).until(EC.visibility_of_any_elements_located((By.XPATH, "//div[@class='rc']//h3//ancestor::a[1]")))
    print("Number of links : %s" %len(links))
    for link in links:
    r = requests.head(link.get_attribute('href'))
    print(link.get_attribute('href'), r.status_code)
  • 控制台输出:
    Number of links : 9
    https://www.seleniumhq.org/ 200
    https://www.seleniumhq.org/download/ 200
    https://www.seleniumhq.org/docs/01_introducing_selenium.jsp 200
    https://www.guru99.com/selenium-tutorial.html 200
    https://en.wikipedia.org/wiki/Selenium_(software) 200
    https://github.com/SeleniumHQ 200
    https://www.edureka.co/blog/what-is-selenium/ 200
    https://seleniumhq.github.io/selenium/docs/api/py/ 200
    https://seleniumhq.github.io/docs/ 200


  • 更新

    根据您的反问,从 Selenium 的角度,规范地回答为什么 xpath 有效而不是 tagName 会有点困难。也许您可能想更深入地研究这些讨论:
  • Bug 1323614 - Cannot authenticate: requests.exceptions.MissingSchema: Invalid URL 'stage/auth/token/obtain/': No schema supplied.
  • Invalid URL 'None': No schema supplied. Perhaps you meant http://None?
  • 关于python-3.x - requests.exceptions.MissingSchema : Invalid URL 'None' : No schema supplied while trying to find broken links through Selenium and Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54325867/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com