从html文件获取数据到JSON dict的麻烦

时间:2015-06-29 15:32:21

标签: python json

我正在尝试抓一个网站,到目前为止,我的代码已经让我获得了下面复制的HTML代码。但是,我想访问变量tablelist,特别是'defjson:'部分并解析那里的数据。 看起来.split('\ n')不起作用,但是在空格上拆分不起作用,因为defjson中的数据有一些随机空格。有没有其他方法可以访问defjson?

<script type="text/javascript">
    function _doZoom(t){
        setCookie(fontCookieName,h,9999);
        var a=document.getElementsByTagName("dl");
        var k=[],c=[],g=[];
        var b=a.length;
        for(var f=0;f<b;f++){
            if(a[f].getElementsByTagName("span").length>0){
                g.push(a[f]);k.push(a[f].getElementsByTagName("span")[0]);
                c.push(a[f].getElementsByTagName("span")[1])
            }
        }
        b=g.length;
        var e=document.getElementById("combinationsContainer");
        switch(parseInt(h)){
            case 0:e.style.fontSize="14px";
                for(var d=0;d<b;d++){
                    k[d].className="at";c[d].className=""
                }break;
            case 1:e.style.fontSize="12px";
                for(var d=0;d<b;d++){k[d].className="";c[d].className="at"
                }break
        }
    } 
    var tablelist = new LoadTable({
        id: "dt_1",
        sort: { id: "12", desc: true },
        cells: [{ "n": "股票<font class=\"ssp\" style=\"text-decoration:           underline;\">代码</font>", "s": "5" }, { "n": "股票<font class=\"ssp2\">简称</font>", "w": "58" }, { "n": "相关资料", "w": "120" }, { "n": "申购<br />代码", "w": "44" }, { "n": "发行<br />总数<br />(万股)", "s": "7" }, { "n": "网上<br />发行<br />(万股)", "s": "8" }, { "n": "顶格申购<br />需配市值<br />(万元)<i title=\"黑色斜体部分为预估值,顶格申购需配市值的预估不涉及公司基本面分析,请谨慎参考。\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</i>" }, 
        dataurl: "http://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=NS&sty=NSST&st={sortType}&sr={sortRule}&p={page}&ps={pageSize}&js=var {jsname}={pages:(pc),data:[(x)]}{param}", ...
        defjson:{pages:18,data:[",23772,80199130,万里石,002785,002785,50000000.00,20000000.00,,,,2015-07-08,2015-07-13,,,,,,,zxb,500.00,,,,,,http://topic.eastmoney.com/XMWLSIPO/,中高端石材综合服务商&sbquo;一直专注于建筑装饰石材及景观石材的研发设计、生产和销售。,2.29,2.00,4.59,,0,,2.29,2,4.58,20.00,待上市,,,,,AN201506250010008785,22.9,41.15"

def scrape():
    htmltext = open('test.html','r').read()
    bs = BeautifulSoup(htmltext)
    scripts = bs.find_all('script')[-3]
    print scripts

到目前为止,我的代码获取了html文件的上述部分 我尝试加入:

 for line in scripts.split('\n'):

     if (line.startswith('defjson: ')):

         jsonStr=line.replace('defjson: ','')

         dataDict = json.loads(jsonStr)

但它给了我一个Nonetype错误 有没有更好的方法来访问defjson:part并将其加载到字典中?

0 个答案:

没有答案