scrapy 如何使用Scrappy抓取交互式折线图

z5btuh9x  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(272)

我试着在https://twitchtracker.com/games/32982上抓取查看者图表。我试着检查页面,但是我似乎找不到图表的值。

我试着检查元素,但我得到的只是这个。

dauxcl2d

dauxcl2d1#

下面是一个示例,说明如何使用scrapy-playwright来提取所需的数据:

  1. import scrapy
  2. headers = {
  3. 'authority': 'api.twitch.tv',
  4. 'accept': '*/*',
  5. 'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8',
  6. 'authorization': 'Bearer a4xqvkgns8duyuudnnr3pmo5mjxl36',
  7. 'client-id': '2eji4dzts0ppwwpprxwnao9d27sfwz',
  8. 'origin': 'https://twitchtracker.com',
  9. 'referer': 'https://twitchtracker.com/',
  10. 'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
  11. 'sec-ch-ua-mobile': '?0',
  12. 'sec-ch-ua-platform': '"macOS"',
  13. 'sec-fetch-dest': 'empty',
  14. 'sec-fetch-mode': 'cors',
  15. 'sec-fetch-site': 'cross-site',
  16. 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
  17. }
  18. class twitchSpider(scrapy.Spider):
  19. name = 'twitch'
  20. start_urls = ['https://twitchtracker.com/games/32982']
  21. def start_requests(self):
  22. for url in self.start_urls:
  23. yield scrapy.Request(
  24. url,
  25. headers=headers,
  26. callback = self.parse,
  27. meta = {
  28. 'playwright':True
  29. }
  30. )
  31. def parse(self,response):
  32. from collections import defaultdict
  33. values = response.xpath("(.//*[name()='g'][@class='highcharts-series-group'])[1]//*[name()='g']//*//@d").getall()
  34. class_values = response.xpath("(.//*[name()='g'][@class='highcharts-series-group'])[1]//*[name()='g']//*//@class").getall()
  35. chart_dict = defaultdict(list)
  36. for charts, names in zip(values, class_values):
  37. #chart_dict[names].append(charts)
  38. chart_dict['big'].append(charts.split(' ')[1::3])
  39. chart_dict['small'].append(charts.split(' ')[2::3])
  40. chart_dict['classes'].append(names)
  41. yield chart_dict

当我们得到重叠的折线图时,这将抓取不同系列的图表数据。
然后我们提取bigsmall表示的两个值,剩下的可以通过绘制正确的值来完成。

展开查看全部

相关问题