Skip to main content
 首页 » 编程设计

xpath之网络抓取-从bandcamp.com获取项目标题

2025年12月25日22xxx_UU

我尝试从bandcamp.com的页面“发现”部分获得新发行版的商品标题(摇滚->所有摇滚->新品上市)

scrapy shell 'https://bandcamp.com/?g=rock&s=new&p=0&gn=0&f=all&w=0' 


页面相关源代码的一部分如下所示:

<div class="col col-3-12 discover-item"> 
            <a data-bind="click: playMe, css: { 'playing': playing }" class="item-link playable"> 
                <span class="item-img ratio-1-1"> 
                    <img class="art" data-bind="src_art: { 'art_id': artId, 'format': 'art_tags_large' }" src="https://f4.bcbits.com/img/a1631562669_9.jpg"> 
                    <span class="plb-btn"> 
                        <span class="plb-bg"></span> 
                        <span class="plb-ic"></span> 
                    </span> 
                </span> 
                </a><a data-bind="attr: { 'href': itemURL }, text: title, click: playMe" class="item-title" href="https://reddieseloff.bandcamp.com/album/dead-rebel?from=discover-new">Dead Rebel</a> 
                <a data-bind="attr: { 'href': bandURL }, text: artist, click: playMe" class="item-artist" href="https://reddieseloff.bandcamp.com?from=discover-new">Red Diesel</a> 
                <span class="item-genre" data-bind="text: genre">rock</span> 
 
        </div> 


我试图借助xpath获取item-title的文本(在本例中为“ Dead Rebel”):

 response.xpath('//div[@class="col col-3-12 discover-item"]//a[@class="item-title"]/text()').extract() 


但它什么也没返回。

 [] 


它也不适用于“项​​目艺术家”,因此我想知道我做错了什么。

感谢您的帮助。

请您参考如下方法:

您寻求的所有数据都隐藏在页面主体内部的隐藏div节点中。
当您的浏览器加载网页时,javascript会指示如何解压缩和显示此数据,并且由于scrapy不会运行任何javscript,因此您需要自己执行以下步骤:

 # all of the data is under "<div id="pagedata" data-blob=" attribute 
 data = response.css('div#pagedata::attr(data-blob)').extract() 
 import json 
 data = json.loads(data[0]) 
 # dig through this python dictionary to find your data    
 (it has pretty much everything, even more than the page displays)