微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

硒刮除时仅将最后刮除的物品添加到DF

如何解决硒刮除时仅将最后刮除的物品添加到DF

我正在爬网一个网站,除了将数据附加到DataFrame之外,一切工作都很好;

Firefox can’t establish a connection to the server at wss://chat.example.com/socket.io/?EIO=3&transport=websocket.

结果始终是最后一个被抓取的项目,即team2_position。 将数据附加到数据框中的最佳方法是什么?

解决方法

看起来您正在覆盖df,同时破坏了函数的返回值。可以如下使用:

df.append(function(".home span","team1_name",driver ))

代替:

df =  function(".home span",driver )
,

*******嘿,这里有个小小的变化,一切都很好

当您在函数内部追加时,请注意操作成功完成append,但是这是暂时的,因为您返回函数调用后需要在外部进行追加,因为您总是一次又一次地返回相同的变量,它正在变量“ df”中被覆盖,因此最后分配的任何内容都存储在该变量中,

因此您可以通过多种方式执行此操作

  1. 只需用下面的代码替换最后四行
df = pd.DataFrame()
df.append(function(".home span",driver ))
df.append(function(".away span","team2_name",driver ))
df.append(function(".home strong+ strong","team1_position",driver ))
df.append(function(".away strong+ strong","team2_position",driver ))


更改代码,如下所示,只需复制

def function(selector,name,driver,df) :

try:
    data = {}

    result = WebDriverWait(driver,1).until(EC.visibility_of_element_located((By.CSS_SELECTOR,selector))).text
    print(name,result)
    data.update( {name : result} )


except Exception as e:
    data.update( {name : " "} )
finally :
    df = df.append(data,ignore_index= True)
return df

df = pd.DataFrame()
df=function(".home span",df)
df=function(".away span",df)
df=function(".home strong+ strong",df)
df=function(".away strong+ strong",df)

,就像我们在type1中所做的一样)----> 您可以定义一个函数,将返回的临时dataFrame附加到Final DataFrame 并且可以在函数名称“ function”中调用该函数,因此当我们将此函数称为“ function”时,它将自动调用另一个编写为追加的函数,并且作业已完成。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。