【问题标题】:How to scrape player data from RealGM using Scrapy?如何使用 Scrapy 从 RealGM 中抓取玩家数据?
【发布时间】:2021-03-27 21:43:47
【问题描述】:

首先,我要做的是从 RealGM 中抓取字段,例如: https://basketball.realgm.com/player/player/Summary/1 https://basketball.realgm.com/player/player/Summary/160000

我正在尝试从玩家资料框中提取每条信息,因此在第一个示例中我想提取: 格雷格奥登 C#20 出生:1988年1月22日(33岁) 出生地/家乡:纽约州布法罗 国籍:美国 身高:7-0(213cm) 体重:273(124kg) 选秀进入:2007年NBA选秀 预选队:俄亥俄州立大学(Fr) 高中:劳伦斯北高中 [印第安纳州印第安纳波利斯]

我没有取得太大的成功,我能够在下面获得的代码在提取 href 时起作用,这并不完美,但我可以使用它。问题是我遇到了一个错误,我认为这是因为并非所有玩家都有相同的数据字段,上面的示例是我想要的最大输出,但是有些玩家不会有生日,有些人不会有一个预选队,等等。所以对于那些我需要它的人来说,只需为那个领域拉一个空白,然后继续刮。在没有href并且所有内容都包含在其中的高度/重量之类的字段中拉出我没有成功拉出,每当我引用该部分时,它都会拉出一个空白。

任何帮助将不胜感激!这是我到目前为止所拥有的,但我被困住了:


import scrapy

class RealGMSpider(scrapy.Spider):
    name = "players"

    start_urls = [
            'https://basketball.realgm.com/player/player/Summary/1',
'https://basketball.realgm.com/player/player/Summary/2',
'https://basketball.realgm.com/player/player/Summary/160000'


    ]

    def parse(self, response):

        for player in response.css('.profile-box .container , .level-1'):
                yield {
                        'name': player.css('span::text')[1].get,
                        'link': player.css('a.selected').attrib['href'],
                        'bday': player.css('.half-column-left img+ p a').attrib['href'],
                        'htwn': player.css('p:nth-child(4) a').attrib['href'],
                        'ntion': player.css('.half-column-left p~ p+ p a').attrib['href'],
                        'cteam': player.css('.half-column-right img+ p a').attrib['href'],
                        'agent': player.css('.half-column-right p:nth-child(5) a').attrib['href'],
                        'draftyr': player.css('p:nth-child(6) a').attrib['href'],
                        'earlyen': player.css('p:nth-child(7) a').attrib['href'],
                        'drafted': player.css('p:nth-child(8) a').attrib['href'],
                        'predraft': player.css('p:nth-child(9) a').attrib['href'],
                        'hs': player.css('p:nth-child(10) a').attrib['href']

                }

【问题讨论】:

    标签: python scrapy


    【解决方案1】:

    没关系,我可以使用 BeautifulSoup!

    import csv ;import requests
    from bs4 import BeautifulSoup
    import csv
    import re
    
    url_list = ['https://basketball.realgm.com/player/player/Summary/2',
                'https://basketball.realgm.com/player/player/Summary/1']
    
    for url in url_list:
        r = requests.get(url)
        soup = BeautifulSoup(r.text, 'html.parser')
    
        player = soup.find_all('div', class_='wrapper clearfix container')[0]
    
        playerprofile = re.sub(
            r'\n\s*\n', r'\n', player.get_text().strip(), flags=re.M)
    
        output = playerprofile + "\n"
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-05
      • 2013-05-27
      • 1970-01-01
      • 2018-11-21
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多