【问题标题】:I can't spot some of the elements in the site's source code我无法在网站的源代码中发现某些元素
【发布时间】:2021-10-05 23:07:19
【问题描述】:

我试图爬取这个网站来获取玩家数据。

https://mystics.wnba.com/roster/

我使用“检查”查看了代码,但主表不在源代码中。例如,这是第一个玩家姓名的代码:

<div class="content-table__player-name">
                            <a ng-href="https://www.wnba.com/player/ariel-atkins/" target="_self" href="https://www.wnba.com/player/ariel-atkins/">Ariel Atkins</a>
                        </div>

我在页面源代码中找不到这段代码(或播放器数据的任何代码)。我在源代码中搜索了大部分表格的 div,但我找不到它们。

【问题讨论】:

    标签: python html web-scraping scrapy


    【解决方案1】:

    内容是使用一些 JavaScript 即时生成的。要获得您想要的数据,您的程序需要能够运行和解释 JavaScript。您可以使用 Selenium 或 Chrome 的无头模式等工具从正在运行的浏览器中提取 DOM。

    在 Firefox 中,您可以按 F12 来检查由 JavaScript 代码生成的 DOM。在那里,您可以找到所需的条目。您还可以检查“网络”选项卡,该选项卡向您显示站点发送到服务器的请求。您可能能够识别返回所需结果的请求。

    【讨论】:

    • 谢谢你!对不起,我是一个新手,因为我是一个!我会尽快检查 DOM 的事情。
    【解决方案2】:

    因为标签包含scrapy。所以,这里有一个使用scrapy的解决方案。

    import scrapy
    import json
    
    class Test(scrapy.Spider):
        name = 'test'
        start_urls = ['https://data.wnba.com/data/5s/v2015/json/mobile_teams/wnba/2021/teams/mystics_roster.json']
    
        def parse(self, response):
            data = json.loads(response.body)
            data = data.get('t').get('pl')
    
            for player in data:
                print(player.get('fn'),player.get('ln'))
    

    【讨论】:

      【解决方案3】:

      以下是使用 requests 模块访问内容的方法。

      import requests
      
      link = 'https://data.wnba.com/data/5s/v2015/json/mobile_teams/wnba/2021/teams/mystics_roster.json'
      
      with requests.Session() as s:
          s.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
          res = s.get(link)
          for item in res.json()['t']['pl']:
              print(item['fn'],item['ln'])
      

      输出:

      Leilani Mitchell
      Shavonte Zellous
      Tina Charles
      Elena Delle Donne
      Theresa Plaisance
      Natasha Cloud
      Shatori Walker-Kimbrough
      Sydney Wiese
      Erica McCall
      Ariel Atkins
      Myisha Hines-Allen
      Megan Gustafson
      

      【讨论】:

      • 谢谢你!我刚刚在 YouTube 上尝试弄清楚该怎么做,但你做的方式似乎更容易。我欠你一个!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多