2016-11-08 142 views
0

如何使用scrapy python从JavaScript内容获取数据? javascript看起来像这样使用scrapy python获取数据从JavaScript到Python python

<script type="text/javascript"> 
    var ad_reply_url = "http://www2.mudah.my/ar/send/0?ca=3_s&id=49825097&l=0"; 
    var mcvl = ""; 
    var images = [ 
    'http://img.rnudah.com/images/13/133608119523265.jpg', 
    'http://img.rnudah.com/images/13/135608116569903.jpg', 
    'http://img.rnudah.com/images/13/137608113616541.jpg', 
    'http://img.rnudah.com/images/13/139608119186498.jpg' 
    ]; 
var thumbnails = [ 
    'http://img.rnudah.com/thumbs/13/133608119523265.jpg', 
    'http://img.rnudah.com/thumbs/13/135608116569903.jpg', 
    'http://img.rnudah.com/thumbs/13/137608113616541.jpg', 
    'http://img.rnudah.com/thumbs/13/139608119186498.jpg' 
];</script> 

所以,我想要的是。我想从var图像的数据和打印像这样的数据

['http://img.rnudah.com/images/13/133608119523265.jpg','http://img.rnudah.com/images/13/135608116569903.jpg', 'http://img.rnudah.com/images/13/137608113616541.jpg','http://img.rnudah.com/images/13/139608119186498.jpg' ]; 

任何人都可以帮助我吗?谢谢。

回答

0

我没有使用Scrapy Python,只是普通的Python。 这是很简单的,但:

代码示例:

import ast 
import re 

page_source = ''' 
<script type="text/javascript"> 
    var ad_reply_url = "http://www2.mudah.my/ar/send/0?ca=3_s&id=49825097&l=0"; 
    var mcvl = ""; 
    var images = [ 
    'http://img.rnudah.com/images/13/133608119523265.jpg', 
    'http://img.rnudah.com/images/13/135608116569903.jpg', 
    'http://img.rnudah.com/images/13/137608113616541.jpg', 
    'http://img.rnudah.com/images/13/139608119186498.jpg' 
    ]; 
var thumbnails = [ 
    'http://img.rnudah.com/thumbs/13/133608119523265.jpg', 
    'http://img.rnudah.com/thumbs/13/135608116569903.jpg', 
    'http://img.rnudah.com/thumbs/13/137608113616541.jpg', 
    'http://img.rnudah.com/thumbs/13/139608119186498.jpg' 
];</script> 
''' 

variables = re.findall('(?si)var(.*?);', page_source) 

var_collection = {} 
for var in variables: 
    var = var.strip() 
    var_key = var.split(' = ')[0] 
    var_value = ast.literal_eval(var.split(' = ')[1]) 
    var_collection.update({var_key: var_value}) 

print(var_collection['images']) 

输出:

['http://img.rnudah.com/images/13/133608119523265.jpg', 'http://img.rnudah.com/images/13/135608116569903.jpg', 'http://img.rnudah.com/images/13/137608113616541.jpg', 'http://img.rnudah.com/images/13/139608119186498.jpg'] 

相关: https://stackoverflow.com/a/18108644/295246

+0

好吗..谢谢给我一个提示..只是现在的我试图操纵你的代码,现在我得到了我想要的......谢谢你! :) – shahril

+0

@shahril很高兴帮助。随时欢迎或接受这个答案作为您的解决方案,由您自行决定。谢谢! –