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语法感到困惑 问题摘要:_Xpath_Scrapy - Fatal编程技术网

对XPath语法感到困惑 问题摘要:

对XPath语法感到困惑 问题摘要:,xpath,scrapy,Xpath,Scrapy,您好,我正在尝试学习使用python的Scrapy框架(可在上获得)。下面是我在这里找到的一个教程:,但我打算使用一个不同的网站进行练习,而不仅仅是在阿里巴巴上复制它们。我的目标是从中获取游戏数据 因此,我需要使用Xpath来告诉爬行器要刮取html的哪些部分(我在Scraphero站点上的教程页面的“为产品列表构造Xpath选择器”部分已经完成了一半)。问题是,我花了很长时间才弄明白,要得到我想要的片段,应该用什么样的语法?我整个上午都在复习xpath示例,试图找出正确的语法,但一直没有找到

您好,我正在尝试学习使用python的Scrapy框架(可在上获得)。下面是我在这里找到的一个教程:,但我打算使用一个不同的网站进行练习,而不仅仅是在阿里巴巴上复制它们。我的目标是从中获取游戏数据

因此,我需要使用Xpath来告诉爬行器要刮取html的哪些部分(我在Scraphero站点上的教程页面的“为产品列表构造Xpath选择器”部分已经完成了一半)。问题是,我花了很长时间才弄明白,要得到我想要的片段,应该用什么样的语法?我整个上午都在复习xpath示例,试图找出正确的语法,但一直没有找到

  • 背景资料:
  • 所以我想要的是-from,我想要一个xpath()命令,它将返回一个包含所有显示游戏的数组

    在本教程之后,我了解到如何做到这一点,我希望检查网页中的元素,确定它们的类/id,并在xpath命令中指定它们

    我尝试了很多变体来获取数据,但都返回空数组

    我没有接受过XPath方面的任何培训,所以我不确定我的语法是否有问题,但是我非常感谢您能帮助我使用这个命令返回我要查找的对象。感谢您抽出时间阅读此文章

  • 代码:
  • 以下是一些无效的尝试:

    response.xpath("//div[@class='g5-component--mlb-scores__game-wrapper']")
    response.xpath("//div[@class='g5-component]")
    response.xpath("//li[@class='mlb-scores__list-item mlb-scores__list-item--game']")
    response.xpath("//li[@class='mlb-scores__list-item']")
    response.xpath("//div[@!data-game-pk-id > 0]")'
    response.xpath("//div[contains(@class, 'g5-component')]")
    
  • 预期结果和实际结果
  • 我需要一个XPath命令,该命令返回一个数组,该数组包含mlb.com/scores页面上每个游戏的选择器对象

    到目前为止,我已经能够得到实际不是我想要的一般性返回(我可以得到一个选择器,它通过省略谓词返回整个页面,但每当我尝试指定时,我都会得到一个空数组)


    因此,对于所有尝试,我要么得到错误的对象,要么得到一个空数组。

    您需要始终检查HTML源代码(
    Ctrl+U
    ,在浏览器中)以获取所需的数据。对于MLB页面,您会发现要解析的内容是使用JavaScript动态加载的

    您可以尝试使用Scrapy Splash从您的start_URL获取目标内容,也可以找到用于获取所需信息的直接HTTP请求(使用Chrome Developer Tools的网络选项卡)并解析JSON:

    https://statsapi.mlb.com/api/v1/schedule?sportId=1,51&date=2019-06-26&gameTypes=E,S,R,A,F,D,L,W&hydrate=team(leaders(showOnPreview(leaderCategories=[homeRuns,runsBattedIn,battingAverage],statGroup=[pitching,hitting]))),linescore(matchup,runners),flags,liveLookin,review,broadcasts(all),decisions,person,probablePitcher,stats,homeRuns,previousPlay,game(content(media(featured,epg),summary),tickets),seriesStatus(useOverride=true)&useLatestGames=false&language=en&leagueId=103,104,420