用Python从URL中提取JavaScript信息
我有一个链接到javascript文件的URL,比如说 http://something.com/../x.js
。我需要从 x.js
中提取一个变量。
请问用python可以做到这一点吗?目前我在用 urllib2.urlopen()
,但是当我使用 .read()
时,得到的结果是一团乱麻:
U�(��%y�d�<�!���P��&Y��iX���O�������<Xy�CH{]^7e� �K�\�͌h��,U(9\ni�A ��2dp}�9���t�<M�M,u�N��h�bʄ�uV�\��0�A1��Q�.)�A��XNc��$"SkD�y����5�)�B�t9�):�^6��`(���d��hH=9D5wwK'�E�j%�]U~��0U�~ʻ��)�pj��aA�?;n�px`�r�/8<?;�t��z�{��n��W
�s�������h8����i�߸#}���}&�M�K�y��h�z�6,�Xc��!:'D|�s��,�g$�Y��H�T^#`r����f����tB��7��X�%�.X\��M9V[Z�Yl�LZ[ZM�F���`D�=ޘ5�A�0�){Ce�L*�k���������5����"�A��Y�}���t��X�(�O�̓�[�{���T�V��?:�s�i���ڶ�8m��6b��d$��j}��u�D&RL�[0>~x�jچ7�
当我在开发者工具中查看DOM时,发现body里只有一个用标签包裹的字符串。在普通视图中,这个字符串是一个json元素。
2 个回答
0
在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设置了一些“规则”,当这些规则被满足时,程序就会按照我们的要求去做事情。
比如说,你可能想要让程序在用户输入一个数字时,判断这个数字是奇数还是偶数。如果是偶数,程序就输出“这是一个偶数”;如果是奇数,程序就输出“这是一个奇数”。这就是条件判断的一个简单例子。
条件判断通常用“如果……那么……”的结构来表示。我们可以用一些简单的代码来实现这个逻辑。通过这种方式,程序能够根据不同的输入做出不同的反应。
总之,条件判断让我们的程序变得更加智能,能够根据情况做出不同的决策。
import json
js = urllib2.urlopen("http://something.com/../x.js").read()
data = json.loads(js)
4
.read()
应该能给你在浏览器的“查看源代码”窗口里看到的内容,所以现在有点问题。看起来HTTP响应可能是经过gzip压缩的,但urllib2
不支持gzip。而且,urllib2
也不会请求压缩的数据,所以如果真是这个问题,服务器可能配置错了,但我想这不是你能控制的事情。
我建议你使用requests
。requests
会自动解压gzip编码的响应,这样就能解决这个问题了。
import requests
r = requests.get('https://something.com/x.js')
r.text # unparsed json output, shouldn't be garbled
r.json() # parses json and returns a dictionary
总的来说,requests
比 urllib2
更容易使用,所以我建议你在任何地方都用它,除非你真的必须使用标准库。