我正在使用这个页面上的垃圾外壳Pittsburgh Steelers at New England Patriots - September 10th, 2015来获取单个团队的统计数据。例如,我想为客队(464)拉总码数,当检查元素并复制XPath时,会产生
//*[@id="team_stats"]/tbody/tr[5]/td[1]
但当我跑的时候
^{pr2}$什么也不返回。我注意到这个表与初始数据在一个单独的div中,所以我不确定是否需要从更高的起点开始。即使只是搜索一下
//*[@id="team_stats"]
xpath不返回任何内容。任何帮助都将不胜感激。在
你遇到的问题是(在大多数类似的情况下)网站使用JavaScript呈现游戏的完整信息。这意味着当你在浏览器中打开时,Scrapy看不到你看到的网站。在
因为scray在加载页面后不运行任何JavaScript,所以它不会呈现出ID为
team_stats
的正确表。“Team Stats”表的内容在加载的网站中,但是它们被注释掉了。在一种解决方案是提取包含团队统计信息的注释,并将注释文本转换为HTML并提取其中的数据。在
上面的文本提取了包含所需表的注释。在
对于将来的分析,我建议你使用Chrome的开发工具,在那里你可以禁用JavaScript来分析站点,并用这个选项加载站点。这将返回页面内容,就像Scrapy看到的那样。在
编辑
提取评论后,您可以将其输入到一个新的选择器中,就像Markus在评论中提到的那样:
^{pr2}$在这个新的选择器上,您可以像对
response
对象那样再次使用.xpath()
。在删除注释分隔符很容易:您必须从提取的文本(字符串)的开头和结尾删除它。HTML中的注释以
<!
开头,以>
结尾。您需要将这些字符之间的文本输入到新选择器。在从上面扩展示例:
相关问题 更多 >
编程相关推荐