【发布时间】: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']
}
【问题讨论】: