2014-10-17 30 views
0

我试图捕获源代码http://uslpro.uslsoccer.com/teams/2014/22310.html#ROSTER中的URL。使用scrapy正则表达式捕获web数据

部分源代码如下所示。

getPlayers: function(){ 
    var url; 
    $j('.visibleDiv').hide().removeClass('visibleDiv'); 
    $j('span#indicator-text').text('Roster'); 
    $j('div#indicator').fadeIn(); 
    url = '/teams/65672455/22310-65672522-ros.js';  

该网址是我想要捕获的。我用正则表达式

pattern = re.escape("$j('div#indicator').fadeIn();") + '\s*url\s*=\s*(.*);' 

但它不工作。我在JavaScript中尝试了这个正则表达式。它可以定位在开始索引处。

有人可以帮助我这个正则表达式吗?

回答

0

我想你错过了re.DOTALL flag

In [1]: import re 

In [2]: t = """getPlayers: function(){ 
    var url; 
    $j('.visibleDiv').hide().removeClass('visibleDiv'); 
    $j('span#indicator-text').text('Roster'); 
    $j('div#indicator').fadeIn(); 
    url = '/teams/65672455/22310-65672522-ros.js'; """ 

In [3]: pattern = re.escape("$j('div#indicator').fadeIn();") + '\s*url\s*=\s*(.*);' 

In [4]: re.search(pattern, t, re.DOTALL).groups() 
Out[4]: ("'/teams/65672455/22310-65672522-ros.js'",) 

In [5]: 
+0

我想如果没有re.DOTALL,只是re.search(模式,T).groups()也在努力。我使用了scrapy的response.selector.re(模式),当我发布时它不工作,但我只是尝试了一下,现在它可以工作。谢谢你们一样。 – 2014-10-17 18:00:35