网页表格抓取(Papagiannis(列为Ognen)数组中的名称直接将您带到单个页面 )

优采云 发布时间: 2022-01-28 07:07

  网页表格抓取(Papagiannis(列为Ognen)数组中的名称直接将您带到单个页面

)

  我在尝试抓取 网站 时遇到了一个独特的情况。我正在通过搜索栏搜索数百个名字,然后抓取表格。但是,与该站点相比,有些名称是独一无二的,并且在我的列表中拼写不同。在这种情况下,我在 网站 上手动查找了几个名字,但它仍然直接将我带到了一个页面。其他时候,如果有多个名字相同或相似的人,它就会进入名单(在这种情况下,我想要在nba打过球的人。我已经考虑到了这一点,但我认为值得一提一点点)。如何继续访问这些玩家的个人页面,而不是每次都运行脚本并单击错误以查看哪个玩家的拼写略有不同?此外,数组中的名称会将您直接带到一个页面,即使拼写略有不同或名称列表(需要 NBA 中的名称)。一些例子是 Georgios Papagiannis(在 网站 上被列为 George Papagiannis)、Ognjen Kuzmic(被列为 Ognen Kuzmic)、Nene(被列为 Maybyner Nene,但会带您进入名单--)。看起来很难,但我觉得有可能。此外,似乎不是将所有抓取的数据写入 csv,而是每次都被下一个玩家覆盖。太感谢了。似乎不是将所有抓取的数据写入csv,而是每次都被下一个玩家覆盖。太感谢了。似乎不是将所有抓取的数据写入csv,而是每次都被下一个玩家覆盖。太感谢了。

  我得到的错误: AttributeError: 'NoneType' object has no attribute 'text'

  import requests

from bs4 import BeautifulSoup

import pandas as pd

playernames=['Carlos Delfino', 'Nene', 'Yao Ming', 'Marcus Vinicius', 'Raul Neto', 'Timothe Luwawu-Cabarrot']

result = pd.DataFrame()

for name in playernames:

fname=name.split(" ")[0]

lname=name.split(" ")[1]

url="https://basketball.realgm.com/search?q={}+{}".format(fname,lname)

response = requests.get(url)

soup = BeautifulSoup(response.content, 'html.parser')

if soup.find('a',text=name).text==name:

url="https://basketball.realgm.com"+soup.find('a',text=name)['href']

print(url)

response = requests.get(url)

soup = BeautifulSoup(response.text, 'lxml')

try:

table1 = soup.find('h2',text='International Regular Season Stats - Per Game').findNext('table')

table2 = soup.find('h2',text='International Regular Season Stats - Advanced Stats').findNext('table')

df1 = pd.read_html(str(table1))[0]

df2 = pd.read_html(str(table2))[0]

commonCols = list(set(df1.columns) & set(df2.columns))

df = df1.merge(df2, how='left', on=commonCols)

df['Player'] = name

print(df)

except:

print ('No international table for %s.' %name)

df = pd.DataFrame([name], columns=['Player'])

result = result.append(df, sort=False).reset_index(drop=True)

cols = list(result.columns)

cols = [cols[-1]] + cols[:-1]

result = result[cols]

result.to_csv('international players.csv', index=False)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线