2014-10-17 56 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