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

Python中or逻辑赋值异常,请求协助修正多URL构造代码

问题排查与代码修正

首先我把你提供的代码片段整理出来,方便咱们分析:

search_item = input("Input The Search Item: ")
location = input("Location:")
second_location = input("Second_Location:")

start_urls = [
    "https://www.yellowpages.com/search?search_terms=" + search_item + "&geo_location_terms=" + location,
    "https://www.yellowpages.com/search?search_terms=" + search_item + "&geo_location_terms=" + second_location
    # "https://www.yellowpages.com/search?search_terms=" + search_item...
]

从你提到的「Python中or未设置正确值」的问题来看,我猜你大概率是想处理用户可能不输入第二个位置的场景,想用or给second_location设置默认值,但没写对逻辑?或者是因为空值拼接URL导致了异常?下面我分几种常见情况给你修正方案:


情况1:用户未输入第二个位置时,自动复用第一个位置的值

如果你希望用户跳过第二个位置输入时,默认用第一个位置作为备选,可以用or直接给second_location设置兜底值:

search_item = input("Input The Search Item: ").strip()
location = input("Location:").strip()
# 核心逻辑:如果second_location为空,就用location的值替代
second_location = input("Second_Location:").strip() or location

# 注意:原代码里的&是HTML转义字符,直接拼URL会导致请求错误,要改成&
# 另外用f-string拼接URL比+更清晰,不容易出错
start_urls = [
    f"https://www.yellowpages.com/search?search_terms={search_item}&geo_location_terms={location}",
    f"https://www.yellowpages.com/search?search_terms={search_item}&geo_location_terms={second_location}"
]

这里还加了.strip()处理输入,避免用户不小心输入空格导致的空值问题。


情况2:用户未输入第二个位置时,只保留第一个URL

如果你希望用户没输入第二个位置时,只生成一个有效URL,可以先初始化空列表,再根据条件添加:

search_item = input("Input The Search Item: ").strip()
location = input("Location:").strip()
second_location = input("Second_Location:").strip()

start_urls = []
# 先添加第一个必选的URL
start_urls.append(f"https://www.yellowpages.com/search?search_terms={search_item}&geo_location_terms={location}")

# 只有第二个位置不为空时,才添加第二个URL
if second_location:
    start_urls.append(f"https://www.yellowpages.com/search?search_terms={search_item}&geo_location_terms={second_location}")

这种方式更灵活,不会生成无效的空位置URL。


你可能踩的隐形坑:URL中的&错误

原代码里用了&,这是HTML里的转义字符,直接拼接到URL里会变成https://www.yellowpages.com/search?search_terms=xxx&geo_location_terms=xxx,浏览器会把&当成参数的一部分,而不是分隔符,导致请求失败,所以一定要改成&。

另外,如果担心用户输入的内容里有特殊字符(比如空格、&等),可以用urllib.parse.quote编码参数,避免URL解析错误:

from urllib.parse import quote

search_item = quote(input("Input The Search Item: ").strip())
location = quote(input("Location:").strip())
second_location = quote(input("Second_Location:").strip()) or location

start_urls = [
    f"https://www.yellowpages.com/search?search_terms={search_item}&geo_location_terms={location}",
    f"https://www.yellowpages.com/search?search_terms={search_item}&geo_location_terms={second_location}"
]

这样即使用户输入了带空格的搜索项(比如"coffee shop"),也会被编码成coffee%20shop,完全符合URL规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:45:14