所以我会去一个Instagram帐户,比如说,https://www.instagram.com/foodie/复制它的xpath,它给我一些帖子,关注者数量和关注者数量。
然后我会在scrapy shell上运行命令this命令:
response.xpath( '// * [@ ID = “反应根”] /部分/主要/条/报头/部分/ UL')
获取该列表中的元素,但scrapy不断返回空列表。对我在这里做错了什么的想法?提前致谢!
答案 0 :(得分:1)
此网站是单页应用程序(SPA),因此它的javascript在您的下载程序工作时呈现DOM尚未呈现。
当您使用view(response)
时,您的下载程序收集的javascript可以继续由您的浏览器呈现,因此您可以看到呈现DOM的页面(但无法与Site API进行交互)。您可以通过response.text
查看下载的内容并查看!
在这种情况下,您可以应用selenium + phantomjs为您的蜘蛛制作渲染页面!
另一个技巧:您可以使用正则表达式选择脚本的JSON部分,将其解析为JSON obj并从脚本中选择您的对应属性值(post,following,...)!