Python 抓取音乐网站以获取歌词
我想爬网歌词网站:获得歌曲的名称,艺术家,流派和歌词。 然后我编写以下代码并将其另存为mp3_spider.pyPython 抓取音乐网站以获取歌词,python,python-2.7,web-crawler,Python,Python 2.7,Web Crawler,我想爬网歌词网站:获得歌曲的名称,艺术家,流派和歌词。 然后我编写以下代码并将其另存为mp3_spider.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): yie
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]
}
我在命令行中运行了它:
scrapy runspider mp3_spider.py -o mp3.json
但它什么也不返回。
有人能告诉我怎么做吗?非常感谢您的帮助。您的类&
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
}
我可以问一下你是如何得出你提取的值的吗?我假设您可能不会使用“scrapy shell”your.com…我假设,因为插入您拥有的内容,它会告诉您范围..=[0]..不存在,至少对于所选的路径是这样的
我擅自修改了你的密码但是因为我不懂越南语
,你可能不得不摆弄一些正则表达式
小贴士:
我怀疑
parse
方法应该在类中定义。你知道吗?你好,我非常感谢你在纠正我的文章时所做的努力,信不信由你,很久以前,句子结构和正确的思想结构实际上是我的强项…快进6年,我什么都没有,只是粗鄙阿迪泽,社交媒体,口语化使用任何书面形式来表达我自己是我向他人表达的唯一形式。编程现在已经成为我真正的表达形式,代价是听起来不识字……英语语法复习课程井然有序。谢谢你的帮助。我试着运行你的代码,但似乎不起作用。我不知道我错过了什么。顺便问一下,你能告诉我如何获取xpath和css吗?非常感谢。嘿!嗯…1.你在ass下运行这个项目中的python版本是什么?2.请,当你的代码执行不起作用时,请提供跟踪或错误日志输出…完整详细的响应对于故障排除至关重要,你会这样做的很高兴能尽可能地习惯这样做!!苏…你犯了什么错误?@TôVạnHưng您是否放弃了这个scrapy项目,或者您在运行它时仍然有问题?请记住升级您的scrapy…我完全错过了您关于如何获取xpath的问题。如果您仍然希望我给您提供我的建议,请创建一个问题,并在其中提及我或/并将其链接到此处,已经编写好了,只是担心得到fla谢谢你在这里回答问题里面的问题。
_author_ = 'Tô Vạn Hưng'
__credits__ = 'scriptso' #just helping a brother from the far east
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('s.fn-name::text').extract(),
'artist': response.css('.inline h2::text').extract_first(),
'genre': response.xpath("//div[@class='inline']/h2/a[contains(font.font,'')]//text()").re('[^\n].*\w')[2:],
'lyrics': response.css('.fn-wlyrics.fn-content::text').re('[^\n].*\w+'),
}