gpt4 book ai didi

python - 如何使用 Scrapy 选择器处理不一致的标记?

转载 作者:太空宇宙 更新时间:2023-11-03 16:46:51 25 4
gpt4 key购买 nike

我想从网站获取“Play by play”信息:

http://www.euroleague.net/main/results/showgame?gamecode=197&seasoncode=E2015#!playbyplay

棘手的标记代码:

    <tr>
<td>8</td>
<td>Def Rebound</td>
<td>13 - 13</td>
<td>Zalgiris Kaunas</td>
<td>VECVAGARS, KASPARS</td>
</tr>
<tr class="play">
<td>8</td>
<td>Two Pointer</td>
<td>15 - 13</td>
<td>Zalgiris Kaunas</td>
<td>VECVAGARS, KASPARS</td>
</tr>

当在游戏中获得积分时,它使用:

<tr class="play">

相反:

<tr>

...以视觉方式分离信息。我想要获得“一个又一个事件”,但我正在使用的代码无法处理此问题:

for sel in response.xpath('//div[@class="wp-field wp-field-content table-responsive"]//div/table/tbody/tr'):
item['Minute'] = sel.xpath('td[1]/text()').extract()

我收到的结果是:

{'Event': [u'Def Rebound'],
'Minute': [u'19'],
'Player': [u'KIRILENKO, ANDREI'],
'Res_h': [u'31 - 38'],
'Res_v': [u'31 - 38'],
'Team_player': [u'CSKA Moscow']}

{'Event': [],
'Minute': [],
'Player': [],
'Res_h': [],
'Res_v': [],
'Team_player': []}

当代码必须处理“tr”的“play”类时,会出现空值。

问题:

当我有两个可能的标记选项在某些随机情况下准确时,我该怎么做?

最佳答案

这将得到你想要的一切:

In [53]: l=['Event',                               
'Minute',
'Player',
'Res_h',
'Res_v', 'Team_player']

In [54]: table = r.xpath("//table[@class='table']")

In [55]: for tr in table.xpath(".//tr[position() > 1]"):
assert dict(zip(l, tr.xpath("./td//text()").extract())) != {}

....:
In [56]:

它跳过标题行并拉出所有其余部分,l中元素的顺序是错误的,但想法是正确的,所以我会让你弄清楚你想要什么以及在哪里,这是返回内容的片段通过 tr.xpath("./td//text()":

[u'15', u'Shot Rejected', u'29 - 25', u'Zalgiris Kaunas', u'HANLAN, OLIVIER']
[u'15', u'Block', u'29 - 25', u'Real Madrid', u'NOCIONI, ANDRES']
[u'15', u'Off Rebound', u'29 - 25', u'Zalgiris Kaunas', u' ']
[u'15', u'Two Pointer', u'31 - 25', u'Zalgiris Kaunas', u'VENE, SIIM-SANDER']
[u'15', u'Assist', u'31 - 25', u'Zalgiris Kaunas', u'RANDLE, JEROME']
[u'16', u'Minute', u'31 - 25', u' ', u' ']
[u'16', u'Three Pointer', u'31 - 28', u'Real Madrid', u'NOCIONI, ANDRES']
[u'16', u'Assist', u'31 - 28', u'Real Madrid', u'LLULL, SERGIO']
[u'16', u'Two Pointer', u'33 - 28', u'Zalgiris Kaunas', u'RANDLE, JEROME']
[u'16', u'Foul', u'33 - 28', u'Zalgiris Kaunas', u'SAJUS, MARTYNAS']
[u'16', u'Foul Drawn', u'33 - 28', u'Real Madrid', u'LLULL, SERGIO']
[u'16', u'Free Throw In', u'33 - 29', u'Real Madrid', u'LLULL, SERGIO']
[u'16', u'Free Throw In', u'33 - 30', u'Real Madrid', u'LLULL, SERGIO']
[u'16', u'In', u'33 - 30', u'Zalgiris Kaunas', u'JANKUNAS, PAULIUS']

关于python - 如何使用 Scrapy 选择器处理不一致的标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36230465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com