【发布时间】:2019-10-12 00:27:12
【问题描述】:
我正在尝试使用 Python 构建一个程序,将 NCAA 足球名单抓取到 Excel 文件中,但我不知道如何以我想要的方式组织数据。
目前,我能够从我想要的所有球员那里刮取所有文字,包括姓名、身高和体重、家乡等,但所有这些都集中在一个大块中。我希望名称在一列中,身高和体重在另一列中,依此类推。当它不在表格中时,我找不到任何有关如何执行此操作的信息。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from tkinter import *
window = Tk()
window.title("Roster Scraper v1.0")
window.configure(background="light grey")
window.geometry('300x250')
TeamRoster = Label(window, text="Roster URL: ", font=("Arial"), fg="gray17")
TeamRoster.grid(column=0, row=0, sticky='e')
TeamRoster.configure(background="light grey")
URLEntry = Entry(window, width=20)
URLEntry.configure(background="light grey")
URLEntry.grid(column=1, row=0)
def ScrapeScript():
DesiredRoster = (URLEntry.get())
driver = webdriver.Firefox()
driver.get(DesiredRoster)
PlayerCard = driver.find_element_by_class_name('sidearm-roster-players').text
print(PlayerCard)
SearchButton = Button(window, text="Scrape", command=ScrapeScript)
SearchButton.grid(column=1, row=3)
SearchButton.configure(background = "light grey")
window.mainloop()
我试图从中抓取的网站来自阿拉巴马州的团队网站:https://rolltide.com/roster.aspx?roster=226&path=football
许多大学团队都使用这种精确的网站样式,因此不必手动输入所有这些数据真的很有帮助。任何帮助将不胜感激。
【问题讨论】:
-
可能首先刮取行,然后在每一行刮取名称,然后刮取高度等。因此,您将需要
for-loop 和许多具有不同值的find_element_by_XXX。并在单词elements中使用find_elements_by_XXX和字符s -
最终使用
find_elements_by_class_name(与s)刮取所有sidearm-roster-players-name并刮取所有sidearm-roster-player-position,然后使用zip(all_names, all_positions)创建对(name, position)。但如果任何行没有名称或位置,它可能无法正常工作。