У меня есть скрипт, который очищает веб-сайт и проверяет все ссылки на нем, которые он находит. Моя проблема заключается в том, что, когда я сталкиваюсь со ссылкой с двойной косой чертой (например, //us.cnn.com), мой скрипт завершается неудачей.
Вот код, в котором мой скрипт терпит неудачу:
elif "//" in link.get('href'):
link = "http:" + str(link)
print("tested link is: " + link)
driver = webdriver.Chrome(
'/home/ironmantis7x/PycharmProjects/WebScrapper/chromedriver')
#driver.get(link)
#driver.get(str(link))
driver.get(link.get('href'))
я пытаюсь найти ссылку, которая имеет "//" (двойная косая черта), я просто хочу отправить эту ссылку с добавлением http: чтобы селен открыл эту полную ссылку (http://cnn.com/us например).
Как я могу сделать это правильно?
Вот полный сценарий на случай, если мне понадобится справка.
from bs4 import BeautifulSoup
from selenium import webdriver
import requests
import sys
import time
from datetime import date
from datetime import datetime
import datetime
# chrome browser control options
options = webdriver.ChromeOptions()
options.add_argument('headless')
# options.add_argument('--ignore-certificate-errors')
# options.add_argument("--test-type")
options.binary_location = "/usr/bin/google-chrome" # <--- needed actual path to chrome browser
# hard set path to chromedriver in project
# driver = webdriver.Chrome('/home/ironmantis7x/Documents/BSSLLC/projects/PycharmProjects/WebScrapper/chromedriver')
# system time for time/date stamping
now_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
# fetching url to test
url = raw_input("Enter a website to extract the URL's from: ")
r = requests.get("http://" + url)
data = r.text
# soup = BeautifulSoup(data)
soup = BeautifulSoup(data, 'html.parser')
validURL = 0
validChildURL = 0
invalidURL = 0
for link in soup.find_all('a'):
if "http" in link.get('href'):
driver = webdriver.Chrome(
'/home/ironmantis7x/PycharmProjects/WebScrapper/chromedriver')
driver.get(link.get('href'))
print(driver.title)
with open('valid_link_2.txt', 'a') as f:
print >> f, 'link:', link.get('href')
print(link.get('href'))
driver.get(link.get('href'))
driver.quit()
validURL = validURL + 1
elif "https" in link.get('href'):
driver = webdriver.Chrome(
'/home/ironmantis7x/PycharmProjects/WebScrapper/chromedriver')
driver.get(link.get('href'))
print(driver.title)
with open('valid_link_2.txt', 'a') as f:
print >> f, 'link:', link.get('href')
print(link.get('href'))
driver.get(link.get('href'))
driver.quit()
validURL = validURL + 1
elif "//" in link.get('href'):
link = "http:" + str(link)
print("tested link is: " + link)
driver = webdriver.Chrome(
'/home/ironmantis7x/PycharmProjects/WebScrapper/chromedriver')
driver.get(link.get('href'))
print(driver.title)
with open('valid_link.txt', 'a') as f:
print >> f, 'link:', link.get('href')
print(link.get('href'))
driver.get(link.get('href'))
driver.quit()
validURL = validURL + 1
else:
print(link.get('href') + " is an invalid link")
with open('invalid_link.txt', 'a') as f:
print >> f, link.get('href')
print(link.get('href'))
driver = webdriver.Chrome('/home/ironmantis7x/PycharmProjects/WebScrapper/chromedriver',
chrome_options=options)
driver.quit()
invalidURL = invalidURL + 1