【问题】
由于众所周知的原因,虽然google可以在国内使用。但是使用的是google的hk的链接,很不稳定。
时不时的就被党给屏蔽了,就不可用了。
这导致经常出现这样的情况:
用google搜索出来所需的技术帖子后,但是再点击某帖子的链接,此链接,一点用鼠标点击后,就从原始链接,变为google的链接了,就类似于这样的:
结果由于google链接被重置,所以就打不开了。
但是有时候,其实本身该链接,是有效的,是可以正常打开的。
所以,此时就希望,在这种情况下,找到该帖子的真实地址。
其中,关于帖子的真实完整地址:
1. 如果本身帖子完整地址很短,那么是可以完整显示出来的,比如:
2. 在点击该帖子之前,其实通过鼠标移动到该帖子上面,是可以显示帖子的完整的,原始的地址的,比如:
但是当你点击(不论左键点击,还是右键点击)后,就变成google的地址了:
所以,当该网址如果本身可以打开,但是此时google被重置,就导致你无法找到有效的链接,无法打开本可以打开的原始的链接。
所以,才需要去找到帖子的原始地址的。
【解决过程】
1.之前折腾Python的时候,知道了Python中有个urllib.quote和urllib.unquote的相关函数,就是用来将url编码的。
而此处,注意到google类型的地址:
其中就包含有url=xxx其中xxx是被编码后的原始帖子的地址。
所以,就想到了,可以利用python的unquote函数去解码此url地址,就可以获得对应的帖子的原始地址了。
2.打开Python的IDLE(Python GUI):
然后输入import urllib后,再使用urllib.unquote,即可把对应的url解码出来:
解码出来的结果为:
‘http://www.google.com.hk/url?sa=t&rct=j&q=Samsung+Nand+Flash+Code+Information&source=web&cd=2&ved=0CFkQFjAB&url=http://www.samsung.com/global/business/semiconductor/html/common/file/support/part_number_decoder/Nand_Flash.pdf&ei=CBgiUKiqK8PZrQfU3IC4Ag&usg=AFQjCNGyQb8oO95wu_4dLvH1v_Hif0aRSA’
其中,可以找到对应的url=xxx的内容为:
如此就可以找到真正的,完整的,原始链接了。
【总结】
Python还是很强大,很好用的。
只是对于普通使用者来说,这种用法,稍显繁琐。
等有空,再去弄个html页面,帮助实现这种从google链接,转换,提取出真正的帖子的链接。
【后记】
后来,一直是通过Notepad++中jN插件,使用js脚本,实现了此功能:
从google地址中,获得源地址:
【记录】利用Notepad++的jN插件中的URL编码解码插件,实现从错误的google地址中提取原始url的功能
暂时用的还是不错的。
至少不用麻烦的打开Python了。
而Notepad++,则一直是打开的,所以用起来也算方便。
当然,其实最好的是,有好用的插件,能支持多种浏览器,如IE9,Firefox等,能检测到错误,自动跳转到原始url中。
目前,我所知道的,360安全浏览器,已经实现了此功能了。期待类似的插件的诞生。或者有空自己去折腾出来。。。
【后记 2014-04-09】
1.后来,又遇到类似问题。
然后花了点时间,整理了一下,改进Python脚本为:
>>> import re >>> import urllib >>> urllib.unquote("www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDAQFjAB&url=%68%74%74%70%3a%2f%2f%73%74%61%63%6b%6f%76%65%72%66%6c%6f%77%2e%63%6f%6d%2f%71%75%65%73%74%69%6f%6e%73%2f%38%30%33%35%31%30%37%2f%68%6f%77%2d%74%6f%2d%73%65%74%2d%63%75%72%73%6f%72%2d%70%6f%73%69%74%69%6f%6e%2d%69%6e%2d%65%64%69%74%74%65%78%74&ei=RONEU9a0Es7HkQXJnIGICg&usg=AFQjCNH6yOVmkGi2bQ-0k1_rvEd0mzjb8Q&bvm=bv.64507335,d.dGI") 'www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDAQFjAB&url=http://stackoverflow.com/questions/8035107/how-to-set-cursor-position-in-edittext&ei=RONEU9a0Es7HkQXJnIGICg&usg=AFQjCNH6yOVmkGi2bQ-0k1_rvEd0mzjb8Q&bvm=bv.64507335,d.dGI' >>> re.sub(r".+&url=(?P<url>.+?)&.+", r"\g<url>", urllib.unquote("www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDAQFjAB&url=%68%74%74%70%3a%2f%2f%73%74%61%63%6b%6f%76%65%72%66%6c%6f%77%2e%63%6f%6d%2f%71%75%65%73%74%69%6f%6e%73%2f%38%30%33%35%31%30%37%2f%68%6f%77%2d%74%6f%2d%73%65%74%2d%63%75%72%73%6f%72%2d%70%6f%73%69%74%69%6f%6e%2d%69%6e%2d%65%64%69%74%74%65%78%74&ei=RONEU9a0Es7HkQXJnIGICg&usg=AFQjCNH6yOVmkGi2bQ-0k1_rvEd0mzjb8Q&bvm=bv.64507335,d.dGI")) 'http://stackoverflow.com/questions/8035107/how-to-set-cursor-position-in-edittext' >>>
如图:
这样就可以:
在拿到原始的,被google处理后的url,直接就可以得到已经unquote并处理后的,原始纯的url了。
总结为:
通过:
import re import urllib re.sub(r".+&url=(?P<url>.+?)&.+", r"\g<url>", urllib.unquote("谷歌的地址"))
即可得到纯净的原始地址。
比如从:
www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDAQFjAB&url=%68%74%74%70%3a%2f%2f%73%74%61%63%6b%6f%76%65%72%66%6c%6f%77%2e%63%6f%6d%2f%71%75%65%73%74%69%6f%6e%73%2f%38%30%33%35%31%30%37%2f%68%6f%77%2d%74%6f%2d%73%65%74%2d%63%75%72%73%6f%72%2d%70%6f%73%69%74%69%6f%6e%2d%69%6e%2d%65%64%69%74%74%65%78%74&ei=RONEU9a0Es7HkQXJnIGICg&usg=AFQjCNH6yOVmkGi2bQ-0k1_rvEd0mzjb8Q&bvm=bv.64507335,d.dGI
可以得到:
http://stackoverflow.com/questions/8035107/how-to-set-cursor-position-in-edittext
这样以后就无需借助其他Notepad++等脚本了。