使用python从url中提取javascript信息

时间:2014-03-13 01:41:58

标签: javascript python urllib2 urlopen

我有一个链接到javascript文件的网址,例如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时,正文中唯一的东西是包含在标签中的字符串。在常规视图中,字符串是json元素。

2 个答案:

答案 0 :(得分:4)

.read()应该会在浏览器的“查看源代码”窗口中显示相同的内容,所以出了点问题。看起来HTTP响应可能是gzip压缩,但 urllib2 doesn't support gzip urllib2也不会请求gzip压缩数据,所以如果这是问题,服务器可能配置错误,但我认为这是你无法控制的。

我建议改用 requests requests automatically decompresses gzip-encoded responses,所以它应该为您解决这个问题。

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

一般来说,requestsurllib2更容易使用,所以我建议在任何地方使用它,除非你绝对必须坚持使用标准库。

答案 1 :(得分:0)

import json

js = urllib2.urlopen("http://something.com/../x.js").read()
data = json.loads(js)