Подтвердите URL-адреса, используя Python и Selenium - PullRequest
2 голосов
/ 26 мая 2020

Я хочу выполнить базовую c проверку URL-адреса, и если URL-адрес недействителен, запрос не должен выполняться, если пользователь не ввел действительный. Обновление : Для большей ясности я не хочу, чтобы браузер открывался и запускался скрипт счетчика изображений, если введенный URL-адрес не действителен.

import time 
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

user_url = input('Please enter a valid url:')
driver = webdriver.Chrome('/home/m/Desktop/chromedriver')
driver.get(user_url)
HEADERS = {'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', 'accept': '*/*'}

time.sleep(8)

imagecounter = driver.find_elements_by_css_selector('img')

print('Number of HTML image tags:')
print(len(imagecounter))

Не могли бы вы изменить код и объясните, что происходит? Я пробовал с некоторыми библиотеками, но думаю, из-за моих плохих навыков программирования мне не повезло.

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Вы можете использовать запросы для получения кода статуса HTTP

    import requests
    import time 
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys

    user_url = input('Please enter a valid url:')

    # send a get request to the page, and if the status code is not OK
    # ask for a different url
    def valid_url(url):
        try:
            req = requests.get(url)
            while req.status_code != requests.codes['ok']:
                  return valid_url(input('Please enter a valid url:'))
        except Exception as ex:
            print(f'Something went wrong: {ex}')
            print('Try again!')
            return valid_url(input('Please enter a valid url:'))


        return url

    url = valid_url(user_url)
    driver = webdriver.Chrome()
    driver.get(url) # funtion is called here
    HEADERS = {'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', 'accept': '*/*'}

    time.sleep(8)

    imagecounter = driver.find_elements_by_css_selector('img')

    print('Number of HTML image tags:')
    print(len(imagecounter))
0 голосов
/ 26 мая 2020

Для проверки предоставленного пользователем URL-адреса перед продолжением вы можете использовать модуль Python для проверки статуса запроса, и вы можете использовать следующее решение:

  • Кодовый блок:

    from selenium import webdriver
    import requests
    
    while True:
        user_url = str(input("Please enter a valid url:"))
        req = requests.get(user_url)
        if req.status_code != requests.codes['ok']:
            print("Not a valid url, please try again...")
            continue
        else:
            break
    print("URL was a valid one... Continuing...")
    driver = webdriver.Chrome(executable_path=r'C:\WebDrivers\chromedriver.exe')
    driver.get(user_url)
    # perform your rest of the tasks
    
  • Вывод в консоль:

    Please enter a valid url:https://www.goodday.com
    Not a valid url, please try again...
    Please enter a valid url:https://www.goodday.com
    Not a valid url, please try again...
    Please enter a valid url:https://www.goodday.com
    Not a valid url, please try again...
    Please enter a valid url:https://www.google.com
    URL was a valid one... Continuing...
    
    DevTools listening on ws://127.0.0.1:54638/devtools/browser/975e0993-166a-4144-a05f-dcfb1d9b29a2
    

Ссылка

Вы можете найти пару соответствующих обсуждений в:

...