【问题标题】:How to append to path url after replacing portion in url path using Python使用Python替换url路径中的部分后如何附加到路径url
【发布时间】:2021-09-06 08:46:01
【问题描述】:

我是 urllib 的新手,所以如果这似乎是初学者,我深表歉意。我试图搜索这方面的文档,但还没有找到任何东西。我希望使用 urllib 更改 url 的路径,但在更改或替换后仍会附加更多 url 路径。

from urllib.parse import urlparse
url = 'https://www.espn.com/nhl/team/schedule/_/name/vgs/seasontype/2'
parsed = urlparse(url)
print(parsed)

这是到目前为止的代码,这给了我以下输出:

ParseResult(scheme='https', netloc='www.espn.com', path='/nhl/team/schedule/_/name/vgs/seasontype/2', params='', query='', fragment='')

我希望更改此路径中的 abbv 部分:/name/abbv/seasontype/2seasontype/2 对于我试图获取的数据将保持不变,但团队名称缩写会发生变化。是否可以循环浏览团队缩写列表并仍然在新团队名称后附加seasontype/2

【问题讨论】:

  • 因此,如果您只是想将缩写“vgs”替换为不同的团队缩写 (1),请为感兴趣的团队设置团队缩写列表。 (2)设置url =f'https://www.espn.com/nhl/team/schedule/_/name/{team_abrev}/seasontype/2'形式的request_string,(3)在for team_abrev in team_abbreviations:形式的for循环中执行parsed = urlparse(url)
  • @itprorh66 你会在块的开头设置for循环吗?所以在你声明你的网址之前?你会在 for 循环中设置你的 url 吗?

标签: python-3.x parsing url urllib


【解决方案1】:
from urllib.parse import urlparse
team_abbreviations = ['vgs', 'mtl', 'cgy']
for tm_abrv in team_abbreviations:
    url = f'https://www.espn.com/nhl/team/schedule/_/name/{tm_abrv}/seasontype/2'  
    parsed = urlparse(url)
    print(parsed)

【讨论】:

  • 请先运行您的代码以确保其正常工作,然后再将其发布为答案。
  • 此外,虽然仅代码的答案可能会回答问题,但您可以通过为代码提供上下文、此代码有效的原因以及对文档的一些参考来显着提高答案的质量进一步阅读。来自How to Answer“简洁是可以接受的,但更全面的解释更好。”
  • @PranavHosangadi 如果您阅读了以前的 cmets,我在提供答案之前已经解释了我在做什么。答案是为 OP 提供更广泛的代码解决方案。关于在我提供答案之前进行测试,我通常会这样做,但是由于除了将团队缩写插入到 url 调用中之外,我不知道 OP 正在尝试完成什么,所以我无法测试。
  • 1.评论是临时的,旨在澄清问题,而不是添加答案。如果您发布了回答问题的 cmets,则应在发布答案时将这些 cmets 包含在您的答案中,以使其独立。 2.“我不知道OP想要什么”:然后要求他们澄清而不是发布可能错误的答案。无论如何,您发布的代码甚至在语法上都不合理(缺少引号、未定义的名称),我想提请您注意。
猜你喜欢
  • 2023-01-04
  • 1970-01-01
  • 1970-01-01
  • 2019-04-15
  • 2011-12-15
  • 2021-12-24
  • 2011-12-06
  • 2015-01-31
  • 1970-01-01
相关资源
最近更新 更多