我正在尝试抓一个网站,到目前为止,我的代码已经让我获得了下面复制的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=\"黑色斜体部分为预估值,顶格申购需配市值的预估不涉及公司基本面分析,请谨慎参考。\"> </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/,中高端石材综合服务商‚一直专注于建筑装饰石材及景观石材的研发设计、生产和销售。,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并将其加载到字典中?