爬网音乐网站获取歌词

2024-05-16 18:42:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想抓取一个歌词网站:http://mp3.zing.vn/bai-hat/Vi-Anh-La-Soai-Ca-Dam-Vinh-Hung/ZW78EUE8.html得到歌曲的名称,艺术家,流派和歌词。 然后我写下下面的代码并将其保存为mp3_蜘蛛网.py在

import scrapy

class MP3Spider(scrapy.Spider):
    name = "mp3"
    start_urls = ['http://mp3.zing.vn/bai-hat/Vi-Anh-La-Soai-Ca-Dam-Vinh-Hung/ZW78EUE8.html']

def parse(self, response):
    yield
    {
        'song': response.css('.txt-primary h1::text').extract()[0],
        'artist': response.css('.artist-track-log a::text').extract()[0],
        'genre': response.css('.genre-track-log::text').extract()[0],
        'lyrics': response.css('.fn-content::text').extract()[0]
    }

我在命令行中运行它:

^{pr2}$

但它什么也不返回。 有人能教我怎么做吗?非常感谢你的帮助。在


Tags: texthttpresponsehatextract歌词mp3css
2条回答

您的类MP3Spider实际上不做任何事情,因为parse是一个独立的函数。如果您缩进parse来匹配这样的缩进,它至少会运行。在

class MP3Spider(scrapy.Spider):
    name = "mp3"
    start_urls = ['http://mp3.zing.vn/bai-hat/Vi-Anh-La-Soai-Ca-Dam-Vinh-Hung/ZW78EUE8.html']

    def parse(self, response):
        yield
        {
            'song': response.css('.txt-primary h1::text').extract()[0],
            'artist': response.css('.artist-track-log a::text').extract()[0],
            'genre': response.css('.genre-track-log::text').extract()[0],
            'lyrics': response.css('.fn-content::text').extract()[0]
        }

我冒昧地重现了这个场景,撇开之前海报上的回答。。。。Python的下一个级别是如何解释的,或者不重要。此外:

 def parse(self, response):
        yield
        {
            'song': response.css('.txt-primary h1::text').extract()[0],#here
            'artist': response.css('.artist-track-log a::text').extract()[0]#here,
            'genre': response.css('.genre-track-log::text').extract()[0],#here
            'lyrics': response.css('.fn-content::text').extract()[0]#here
        }

我能问一下你是怎么得出你的值的吗?我想你可能不会用“碎壳”你的网站... 我想是因为插入你所拥有的,它会告诉你范围。。=[0]。。。。不存在,至少对于选定的路径。在

我擅自修改了你的密码。。但既然我不懂越南语 ,您可能需要修改一些正则表达式。在

小贴士:

  1. 虽然不一定很重要,但是当你在抓取包含段落的内容时,最好使用逐项选择,这会使大文本体的分组变得更容易,而且在我的经验中不需要正则表达式。

  2. 习惯使用Scrapy shell函数并在其中进行所有路径选择。如果您使用它并养成第一件事类型视图(响应)的习惯,这将节省您很多时间。动态加载的页面或阻止Scrapy默认代理头的web页面不会像普通页面那样简单(仍然很容易,总会有办法解决这个问题)。

^{pr2}$

相关问题 更多 >