2016-03-02 106 views
1

我有以下蜘蛛:Scrapy只提取URL的一部分

start_urls = ['https://www.youtube.com/user/ZaidAliT/videos'] 

def parse_question(self, response): 
    yield { 
     'title': response.css('h1 span::text').extract()[0], 
     'views': response.css('div .watch-view-count::text').extract()[0], 
     'link': response.url, 
    } 

目前,當我分析,我得到的通道的整個環節中response.url如下所示:

"link": "https://www.youtube.com/watch?v=qEybDk00rJE" 

我如何修改這個,我只提取網址中的qEybDk00rJE部分?

回答

2

嘗試

'link'=response.url.split('=')[-1] 

這將返回所有在最後的 '='

2

我想你想的完整的查詢,如果要分析一個URL,使用裏urlparse:

In [1]: import urlparse 

In [2]: url = "https://www.youtube.com/watch?v=qEybDk00rJE" 

In [3]: parsed = urlparse.urlparse(url) 

In [4]: parsed 
Out[4]: ParseResult(scheme='https', netloc='www.youtube.com', path='/watch', params='', query='v=qEybDk00rJE', fragment='') 

In [5]: parsed.query 
Out[5]: 'v=qEybDk00rJE' 

如果您真的只想要=之後發生的事情,您可以拆分查詢。