Scrapy只提取了部分网址

时间:2016-03-02 22:54:20

标签: python web-scraping scrapy

我有以下蜘蛛:

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 个答案:

答案 0 :(得分:3)

尝试

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

这将返回最后一个' ='

之后的所有内容

答案 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'

如果您真的只想要=之后的内容,则可以拆分查询。