如何将列表中的字符串转换为url?

How to convert a string in list into url?

如何将列表中的字符串转换成url?我尝试 url.parse,但没有成功。

!pip install selenium
from urllib.parse import urlparse
from urllib.parse   import quote
from urllib.request import urlopen
import time

browser = webdriver.Chrome(executable_path='./chromedriver.exe')
wait = WebDriverWait(browser,5)
output = []
for i in range(1,2): # Iterate from page 1 to the last page
    browser.get("https://tw.mall.yahoo.com/search/product?p=%E5%B1%88%E8%87%A3%E6%B0%8F&pg={}".format(i))
    
 wait.until(EC.presence_of_element_located((By.XPATH,"//ul[@class='gridList']")))


    product_links = browser.find_elements(By.XPATH,"//ul[@class='gridList']/li/a")
    
     
    for link in (product_links):
        print(f"{link.get_attribute('href')}")
        output.append([link.get_attribute('href')])


for b in output[:3]:
    print(b)

上面的总代码,我试着把字符串做成url。但是没用。

我想你想做的是:

// importing library 
from urllib.parse import urlparse

// putting the link in a list 
b = [['https://tw.mall.yahoo.com/item/p033088522688']
['https://tw.mall.yahoo.com/item/p0330103147501']
 ['https://tw.mall.yahoo.com/item/p033097510324']]

// going through each element of the list and parse them 
for i in range ( len (b)) : 
     print(urlparse(b[i]))

这不是 url 的列表,您可以这样定义该列表:

b = ['https://tw.mall.yahoo.com/item/p033088522688', 'https://tw.mall.yahoo.com/item/p0330103147501', 'https://tw.mall.yahoo.com/item/p033097510324']

之后您需要使用 for 循环遍历列表以获取每个字符串,然后在循环内您可以将字符串解析为 url。当然你首先需要导入 urlparse 包。

from urlparse import urlparse

b = ['https://tw.mall.yahoo.com/item/p033088522688', 'https://tw.mall.yahoo.com/item/p0330103147501', 'https://tw.mall.yahoo.com/item/p033097510324']

for el in b:
    parsedUrl = urlparse(el)
    # do something with parsedUrl

您可以在此处找到有关 url 解析库的更多信息:https://pymotw.com/2/urlparse/

嗯,首先:

NameError: name 'url' is not defined

抛出此错误是因为您没有导入正确的库,或者没有名称为 url.

的对象

您的变量 b 是一个字符串列表,您可以使用 b[index] 从中访问任何元素,其中 index 是字符串在列表中的位置(例如 b[0] 结果为 https://tw.mall.yahoo.com/item/p033088522688 等)。

在 python 中,您通过将事物列表放在方括号之间来定义列表。您在这方面出错的地方在于,您没有列出用逗号分隔的网址,而是将它们分别定义为列表。

您当前错误的原因(如评论中所回避的那样)很可能是由于未导入 URL。

import urllib as url
urls = ['https://tw.mall.yahoo.com/item/p033088522688','https://tw.mall.yahoo.com/item/p0330103147501','https://tw.mall.yahoo.com/item/p033097510324']
for url_string in urls:
    print(url.parse(url_string))