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