I have csv file and passing csv data has parameter to python code. In csv file has URL data. What is the correct way to call URL in python. Getting error Cannot navigate to invalid URL
CSV file
ID,category,link
sports_shoes,sports-shoes,https://www.flipkart.com/mens-footwear/sports-shoes/pr?otracker=categorytree&page=1&sid=osp%2Ccil%2C1cu
Code:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
import time
import csv
with open('mydata.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
#print(row['ID'] ,row['category'],row['link'])
url = row['link']
print(url)
chrome_path = r"C:\Users\Venkatesh\AppData\Local\Programs\Python\Python35\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
RegionIDArray = url
data_list=[]
data = []
mobile_details_data = []
delay = 30 # seconds
for reg in RegionIDArray:
driver.get(reg)
driver.quit()
Error:
Traceback (most recent call last):
File ".\input_file.py", line 24, in <module>
driver.get(reg)
File "C:\Users\Venkatesh\AppData\Local\Programs\Python\Python35\Lib\site-packages\selenium\webdriver\remote\webdriver.
py", line 250, in get
self.execute(Command.GET, {'url': url})
File "C:\Users\Venkatesh\AppData\Local\Programs\Python\Python35\Lib\site-packages\selenium\webdriver\remote\webdriver.
py", line 238, in execute
self.error_handler.check_response(response)
File "C:\Users\Venkatesh\AppData\Local\Programs\Python\Python35\Lib\site-packages\selenium\webdriver\remote\errorhandl
er.py", line 193, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: unhandled inspector error: {"code":-32000,"messag
e":"Cannot navigate to invalid URL"}
(Session info: chrome=57.0.2987.133)
(Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.2.9200 x86_64)
Your url
variable contains the link which you want to access. You code is looping through a string and making a driver.get()
call on each character. Which basically explains the error.
Since, you are already looping through your data in for row in reader:
, you don't need the inner loop. Simply use driver.get(url)
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.