You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将列表中的字符串转换为URL?使用url.parse无效如何解决

问题解决方案

现有代码核心问题

  • 缺失selenium相关模块导入:代码中使用的webdriver、WebDriverWait、EC、By均未提前导入,运行直接报错
  • 缩进逻辑错误:wait.until、product_links两行代码缩进位置错误,不在循环体内,执行顺序完全不符合预期
  • URL编码不规范:查询参数p的硬编码存在无效片段,要转中文为URL编码需调用quote()方法处理,不能手动拼接编码片段
  • urlparse使用逻辑偏差:urlparse的作用是解析已有URL拆分出协议、域名、路径、参数等字段,不是用来将普通字符串转为可请求的合法URL,后者需要用quote()做编码处理

修正后完整代码

!pip install selenium
from urllib.parse import urlparse, quote
from urllib.request import urlopen
import time
# 补全selenium相关依赖导入
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

browser = webdriver.Chrome(executable_path='./chromedriver.exe')
wait = WebDriverWait(browser,5)
output = []

# 替换为你要搜索的中文关键词,自动做URL编码
keyword = "屈臣氏"
encoded_keyword = quote(keyword)

# 可自行修改页码范围
for i in range(1,2):
    # 构造合法URL
    target_url = f"https://tw.mall.yahoo.com/search/product?p={encoded_keyword}&pg={i}"
    # 如果需要解析URL结构,可调用urlparse:parsed_url = urlparse(target_url)
    browser.get(target_url)
    
    # 修正缩进,放在循环内部
    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:
        href = link.get_attribute('href')
        print(href)
        output.append(href)

# 输出前3条采集到的URL
for b in output[:3]:
    print(b)

# 如果要把列表中的所有URL字符串解析为结构化URL对象,执行以下代码即可
# parsed_url_list = [urlparse(url) for url in output]

补充说明

  • 要把含中文的普通字符串转为可请求的合法URL,仅需要对中文/特殊字符部分调用quote()做百分号编码即可
  • 要解析已有URL的各个字段,才需要调用urlparse(),返回结果会包含协议、域名、路径、查询参数等所有URL组成部分

内容的提问来源于stack exchange,提问作者Dingyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:45:01