python爬取js script中的变量_在Python中获取脚本标记内的变量数据或从js中添加的内容...

编辑

这将使用re模块来提取数据并将其作为JSON加载:import urllib

import json

import re

from bs4 import BeautifulSoup

web = urllib.urlopen("http://www.nasdaq.com/quotes/nasdaq-financial-100-stocks.aspx")

soup = BeautifulSoup(web.read(), 'lxml')

data = soup.find_all("script")[19].string

p = re.compile('var table_body = (.*?);')

m = p.match(data)

stocks = json.loads(m.groups()[0])

>>> for stock in stocks:

... print stock

...

[u'ASPS', u'Altisource Portfolio Solutions S.A.', 116.96, 2.2, 1.92, 86635, u'N', u'N']

[u'AGNC', u'American Capital Agency Corp.', 23.76, 0.13, 0.55, 3184303, u'N', u'N']

.

.

.

[u'ZION', u'Zions Bancorporation', 29.79, 0.46, 1.57, 2154017, u'N', u'N']

问题是脚本标记偏移量是硬编码的,并且没有可靠的方法在页面中定位它。对页面的更改可能会破坏您的代码。

原始答案

然后使用Pythoncsv模块来解析和处理它。这不仅更方便,而且将是一个更具弹性的解决方案,因为对HTML的任何更改都可能很容易破坏您的屏幕抓取代码。

否则,如果查看实际的HTML,您将发现数据在以下脚本标记中的页面中可用:

["ADBE", "Adobe Systems Incorporated", 66.91, 1.44, 2.2, 3629837, .6, "N", "N"],

["AKAM", "Akamai Technologies, Inc.", 57.47, 1.57, 2.81, 2697834, .3, "N", "N"],

["ALXN", "Alexion Pharmaceuticals, Inc.", 170.2, 0.7, 0.41, 659817, .1, "N", "N"],

["ALTR", "Altera Corporation", 33.82, -0.06, -0.18, 1928706, .0, "N", "N"],

["AMZN", "Amazon.com, Inc.", 329.67, 6.1, 1.89, 5246300, 2.5, "N", "N"],

....

["YHOO", "Yahoo! Inc.", 35.92, 0.98, 2.8, 18705720, .9, "N", "N"]];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值