我正在抓取一個頁面以獲取 URL,然后使用它們來抓取一堆資訊。我想避免一直復制和粘貼,但我找不到如何讓 get() 與物件一起作業。我的代碼的第一部分運行良好,但是當我到達嘗試獲取 url 的部分時,我收到以下錯誤訊息:
Traceback (most recent call last):
File "/Users/rcastong/Desktop/imgs/try-creating-object-url.py", line 61, in <module>
driver4.get(urlworks2)
File "/Users/rcastong/Library/Python/3.9/lib/python/site-packages/selenium/webdriver/remote/webdriver.py", line 333, in get
self.execute(Command.GET, {'url': url})
File "/Users/rcastong/Library/Python/3.9/lib/python/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/Users/rcastong/Library/Python/3.9/lib/python/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument
(Session info: chrome=98.0.4758.109)
這是部分代碼
#this part works well
for number, item in enumerate(imgs2, 1):
# print('---', number, '---')
img_url = item.get_attribute("href")
if not img_url:
print("none")
else:
print('"' img_url '",')
# the error happens on driver4.get(urlworks2)
for i in range(0,30):
urlworks = img_url[i]
urlworks2 = urlworks.encode('ascii', 'ignore').decode('unicode_escape')
driver4 = webdriver.Chrome()
driver4.get(urlworks2)
def check_exists_by_xpath(xpath):
try:
WebDriverWait(driver3,55).until(EC.presence_of_all_elements_located((By.XPATH, xpath)))
except TimeoutException:
return False
return True
imgsrc2 = WebDriverWait(driver3,55).until(EC.presence_of_all_elements_located((By.XPATH, "//p[@data-testid='artistName']/ancestor::a[contains(@class,'ChildrenLink')]")))
for number, item in enumerate(imgsrc2, 1):
# print('---', number, '---')
artisturls = item.get_attribute("href")
if not artisturls:
print("none")
else:
print('"' artisturls '",')
uj5u.com熱心網友回復:
此錯誤訊息...
Traceback (most recent call last):
.
driver4.get(urlworks2)
.
self.execute(Command.GET, {'url': url})
.
self.error_handler.check_response(response)
.
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument
(Session info: chrome=98.0.4758.109)
...暗示url作為引數傳遞給get()的引數是無效的。
深潛
With 在第一個for回圈中item.get_attribute("href")回傳一個 url 字串并img_url在每次迭代時更新。所以實際上img_url仍然是一個字串,但不是您假設的 url 串列。結果,在第二個for回圈中,當您嘗試迭代字串的元素并將它們傳遞給get()您時,您會看到錯誤InvalidArgumentException: Message: invalid argument。
惡魔開始
例如下面的代碼行:
img_url = 'https://www.google.com/'
for i in range(0,5):
urlworks = img_url[i]
urlworks2 = urlworks.encode('ascii', 'ignore').decode('unicode_escape')
print(urlworks2)
印刷:
h
t
t
p
s
解決方案
在全域范圍內宣告一個空串列img_url并繼續將href附加到串列中,以便您以后可以迭代串列。
img_url = []
for number, item in enumerate(imgs2, 1):
img_url.append(item.get_attribute("href"))
參考
您可以在以下位置找到一些相關的詳細討論:
- selenium.common.exceptions.InvalidArgumentException:訊息:使用 Selenium Python 從文本檔案讀取的 URL 呼叫 get() 時引數無效錯誤
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/435241.html
上一篇:python-如何迭代兩個串列并在pythonpandas中以不同方式定位輸出串列的元素?
下一篇:為什么這個串列總是搶到第一項?
