如何将列表中的字符串转换为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))
如何将列表中的字符串转换成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))