Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath 网络爬网-从bandcamp.com获取项目标题_Xpath_Web Scraping_Scrapy_Scrapy Shell - Fatal编程技术网

Xpath 网络爬网-从bandcamp.com获取项目标题

Xpath 网络爬网-从bandcamp.com获取项目标题,xpath,web-scraping,scrapy,scrapy-shell,Xpath,Web Scraping,Scrapy,Scrapy Shell,我试图从bandcamp.com的新版本中从页面的“发现”部分(摇滚->所有摇滚->新来者)获取物品标题 页面的部分相关源代码如下所示: <div class="col col-3-12 discover-item"> <a data-bind="click: playMe, css: { 'playing': playing }" class="item-link playable"> <span class

我试图从bandcamp.com的新版本中从页面的“发现”部分(摇滚->所有摇滚->新来者)获取物品标题

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

<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>
但它什么也不返回

 []
它也不适用于“项目艺术家”,所以我想知道我做错了什么


非常感谢您的帮助。

您查找的所有数据都隐藏在页面正文内的隐藏
div
节点中。
当您的浏览器加载网页时,javascript会指示如何解包和显示此数据,因为scrapy不运行任何脚本,所以您需要自己执行此步骤:

 # 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)

#所有数据都在“我不习惯刮泥,但你能试试吗”
//a[@class=“item title”]
?另外,使用
bs4
和提供的
html
我可以得到你想要的
Dead Rebel
文本。你感兴趣吗?也许你可以混合一些
bs4
scrapy
代码。.@dot.Py
bs4
做的事情与scrapy的
parsel
做的事情完全一样,所以不会有太大变化。这个真实y几乎什么都有。试图用pprint找出dict中的什么
从pprint导入pprint
输出=打开('dict.txt',w+')
pprint(data,out)
你可以用json.dumps(data,indent=2)
将数据打印到文件中“然后,您可以使用一些文本编辑器,甚至是专用于查看json树的软件来检查数据,例如这个在线编辑器:
 []
 # 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)