我一直不愿意发布有关此的问题,但经过 3 天的谷歌搜索后,我无法使其正常工作。长话短说,我正在为 WoW 制作一个突袭装备追踪器。
我正在使用 BS4 来处理网页抓取,我可以拉出页面并从中抓取我需要的信息。我遇到的问题是当玩家的名字中有一个扩展的 ascii 字符时,例如:thermíte。(我是 alt+161)
http://us.battle.net/wow/en/character/garrosh/thermíte/advanced
我试图弄清楚如何重新编码网址,所以它更像这样:
http://us.battle.net/wow/en/character/garrosh/therm%C3%ADte/advanced
我将 tkinter 用于 gui,我让用户从下拉列表中选择他们的领域,然后在输入字段中输入角色名称。
namefield = Entry(window, textvariable=toonname)
我有一个抓取功能,可以执行主要个人资料页面的初始抓取。这是我将 namefield 的值分配给全局变量的地方。(我试图将它直接传递给刮板)
namefield = Entry(window, textvariable=toonname, command=firstscrape)
我以为我很接近了,因为当它通过“thermíte”时,scrape 函数会打印出“therm\xC3\xADte”,我需要做的就是用 '%' 替换 '\x' ,我会是金色的。但这行不通。我可以使用 mastername.find('\x') 并且它会在字符串中找到它的实例,但是执行 mastername.replace('\x','%') 实际上不会替换任何东西。
我尝试了 r'\x' '\%' r'\x' 等的各种组合。没有骰子。
最后,当我尝试执行诸如编码为拉丁文然后解码回 utf-8 之类的操作时,我收到有关它如何无法处理扩展的 ascii 字符的错误。
urlpart1 = "http://us.battle.net/wow/en/character/garrosh/"
urlpart2 = mastername
urlpart3 = "/advanced"
url = urlpart1 + urlpart2 + urlpart3
这就是我一直用来尝试重建最终 url 的内容(atm 我将保持领域不变,直到我可以解决名称问题)
语言:
我正在尝试使用扩展 ascii 的 url,例如:
http://us.battle.net/wow/en/character/garrosh/thermíte/advanced
并让它成为浏览器可以轻松处理的网址,例如:
http://us.battle.net/wow/en/character/garrosh/therm%C3%ADte/advanced
与所有正常的扩展 ascii 字符。
我希望这是有道理的。
这是完整脚本 atm 的 pastebin。atm 中有一些东西直到以后才使用。粘贴链接