【问题标题】:Scraping a url ending in .js using python使用python抓取以.js结尾的url
【发布时间】:2013-05-04 07:40:17
【问题描述】:

我正在尝试使用 python 从网站获取一些历史收益数据。数据的 url 以 .js 结尾(这是一个 javascript 链接)。问题是如果我使用 urllib.urlopen 来读取链接,它会转换为字符串,从该字符串中提取数据是一场噩梦。我想知道是否有一个模块可以让我们以类似于 json 的方式下载数据。

我要抓取的链接是:http://test.optionslam.com/site_media/chart/data/GOOG_data.js

这就是我尝试的方式:

data = urlopen('http://test.optionslam.com/site_media/chart/data/GOOG_data.js').read()

有人可以为此提出更好的方法吗?

【问题讨论】:

  • Javascript is 一个字符串 - urllib 没有为你做任何类型的转换。

标签: javascript python url web-scraping


【解决方案1】:

只需删除 var = 部分和终止 ; 并在其余部分使用 JSON 解析器。我确定such a thing exists for python

类似这样的:

  • 照样获取字符串
  • 将所有var 替换为{
  • = 替换为:
  • ; 替换为},
  • 删除最后一个,
  • 以 JSON 格式读入

【讨论】:

    【解决方案2】:

    按照luksch的指示:

    import urllib, json
    
    data = urllib.urlopen('http://test.optionslam.com/site_media/chart/data/GOOG_data.js').read()
    data = data.replace("var", "{")
    data = data.replace("=", ":")
    count = data.count(";") - 1
    data = data.replace(";", "},", count).replace(";", "}",) 
    dump = json.dumps(data)
    json = json.loads(dump)
    print json
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 2020-10-06
      • 1970-01-01
      • 2018-04-16
      相关资源
      最近更新 更多