在 Steam 中传递非 ASCII 字符 url
Passing a non ascii character in steam url
我正在尝试获取商品的价格 StatTrak™ Dual Berettas | Panther (Factory New)
。然而 TM 引起了问题,因为 urllib 将其视为非 ascii 字符。我发现了这个 How to fetch a non-ascii url with urlopen? 但无论出于何种原因,Steam 都出现了 500 错误
from urllib.parse import quote
def get_price(item_name):
base_url = 'http://steamcommunity.com/market/priceoverview/?appid=730¤cy=1&market_hash_name={}'
print(base_url.format(quote(item_name)))
request = urllib.request.urlopen(base_url.format(quote(item_name)))
正在工作 url(在浏览器中完成):https://steamcommunity.com/market/priceoverview/?appid=730¤cy=1&market_hash_name=StatTrak%E2%84%A2%20Dual%20Berettas%20|%20Panther%20(Factory%20New)
我似乎需要通过这个,但是 urllib 不允许我通过。我能做什么?
您的代码似乎工作正常:
>>> base_url = 'http://steamcommunity.com/market/priceoverview/?appid=730¤cy=1&market_hash_name={}'
>>> urllib.request.urlopen(base_url.format(quote("StatTrak™ Dual Berettas | Panther (Factory New)"))).read()
b'{"success":true,"lowest_price":".80","volume":"3","median_price":".53"}'
我认为您的问题是由于双引号引起的。 “输出 URL”中的 %2520
表示您引用了一个 space (%20
) 两次 (' ' -> %20 -> %2520
).
但是您的代码似乎只引用了一次,这很好。您必须将已引用的项目传递给函数。
我正在尝试获取商品的价格 StatTrak™ Dual Berettas | Panther (Factory New)
。然而 TM 引起了问题,因为 urllib 将其视为非 ascii 字符。我发现了这个 How to fetch a non-ascii url with urlopen? 但无论出于何种原因,Steam 都出现了 500 错误
from urllib.parse import quote
def get_price(item_name):
base_url = 'http://steamcommunity.com/market/priceoverview/?appid=730¤cy=1&market_hash_name={}'
print(base_url.format(quote(item_name)))
request = urllib.request.urlopen(base_url.format(quote(item_name)))
正在工作 url(在浏览器中完成):https://steamcommunity.com/market/priceoverview/?appid=730¤cy=1&market_hash_name=StatTrak%E2%84%A2%20Dual%20Berettas%20|%20Panther%20(Factory%20New)
我似乎需要通过这个,但是 urllib 不允许我通过。我能做什么?
您的代码似乎工作正常:
>>> base_url = 'http://steamcommunity.com/market/priceoverview/?appid=730¤cy=1&market_hash_name={}'
>>> urllib.request.urlopen(base_url.format(quote("StatTrak™ Dual Berettas | Panther (Factory New)"))).read()
b'{"success":true,"lowest_price":".80","volume":"3","median_price":".53"}'
我认为您的问题是由于双引号引起的。 “输出 URL”中的 %2520
表示您引用了一个 space (%20
) 两次 (' ' -> %20 -> %2520
).
但是您的代码似乎只引用了一次,这很好。您必须将已引用的项目传递给函数。