python提取网页array内容

python+soup,已经获取到网页,但是怎么提取如下数组里的数据:
var uA = new Array();
var uD = new HashMap();
uA[0] = new Array();
uA[0][0] = "01";
uA[0][1] = "\xd6\xd0\xc1\xb8\xc1\xc9\xc4\xfe\xc1\xb8\xd3\xcd\xbd\xf8\xb3\xf6\xbf\xda\xb9\xab\xcb\xbe\xb4\xf3\xc1\xac\xb4\xa2\xd4\xcb\xc3\xb3\xd2\xd7\xb9\xab\xcb\xbe";
uD.put("a-F", 0);
uA[1] = new Array();
uA[1][0] = "02";
uA[1][1] = "\xb4\xf3\xc1\xac\xba\xcf\xc8\xda\xb2\xd6\xb4\xa2\xd3\xd0\xcf\xde\xb9\xab\xcb\xbe";

首先确认你贴出来的这些都是被Python采集的字符串,假设为 s.

即:s = """var uA = new Array();
var uD = new HashMap;

uA[0] = new Array();.........."""


然后你针对你感兴趣的内容来过滤出你要的信息(比如你只对双引号内的内容感兴趣)


参考代码如下:

# -*- coding: cp936 -*-
s = """var uA = new Array();
var uD = new HashMap();
uA[0] = new Array();
uA[0][0] = "01";
uA[0][1] = "\xd6\xd0\xc1\xb8\xc1\xc9\xc4\xfe\xc1\xb8\xd3\xcd\xbd\xf8\xb3\xf6\xbf\xda\xb9\xab\xcb\xbe\xb4\xf3\xc1\xac\xb4\xa2\xd4\xcb\xc3\xb3\xd2\xd7\xb9\xab\xcb\xbe";
uD.put("a-F", 0);
uA[1] = new Array();
uA[1][0] = "02";
uA[1][1] = "\xb4\xf3\xc1\xac\xba\xcf\xc8\xda\xb2\xd6\xb4\xa2\xd3\xd0\xcf\xde\xb9\xab\xcb\xbe";
"""

# 逐行分析,这里可以看出每行结尾都有';' 可以用来做划分行的字符 
for line in s.split(";"):
    # 如果这一行的末尾是'"' 说明这是我们要的内容
    if '"' == line[-1]:
        # 双引号的起始位置
        i = line.find('"')
        # 获取双引号间的内容 这时会得到类似 "\xd6\xd0\xc1\xb8"这样的东西
        text = line[i:]
        # 我们需要把马上的东西解码一下,简单的用 eval 就行了
        text = eval(text)
        # 打印出你要的结果
        print(text)


输出:

>>> 

01

中粮辽宁粮油进出口公司大连储运贸易公司

02

大连合融仓储有限公司




希望对你有所帮助~~

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-03
你这是什么代码啊?好象是BASIC。 或者是C#? 不象是JAVA啊。 也不是python
如果你用python + soup, 结果是一个对象集,直接用方法就拿出来了。追问

是jsp网页提取出的源码的一部分,我用print page显示出的一段,就是里面定义数组的,我想把数组的内容提 出来。好吧,刚学不久,不知道用什么方法提取,能不能说一下?
“xa2\xd3\xd0\xcf\xde”这种的是中文打印出的乱码,应该是uA[0][0] = "01";uA[0][1] ="大豆";类似这样的

追答

嗯。忘记javascript这个事儿了。我对JS不太熟悉。 通常它不会直接用汉字,而是编码过后的东西。就是你上面写的所谓的“乱码”。这个方法我比较的推荐。

这里面的汉字。你直接在HTML里写出来。或者是赋值给某个HTML元素就可以显示出来了。

相似回答