亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何通過網絡抓取所有擊球手的名字?

如何通過網絡抓取所有擊球手的名字?

翻閱古今 2021-06-21 12:04:14
我想抓取 2018 年的所有 MLB 擊球手統計數據。這是我目前的代碼:#import modulesfrom urllib.request import urlopenfrom lxml import html#fetch url/htmlresponse = urlopen("https://www.baseball-reference.com/leagues/MLB/2018-standard-batting.shtml")content = response.read()tree = html.fromstring( content )#parse datacomment_html = tree.xpath('//comment()[contains(., "players_standard_batting")]')[0]comment_html = str(comment_html).replace("-->", "")comment_html = comment_html.replace("<!--", "")tree = html.fromstring( comment_html )for batter_row in tree.xpath('//table[@id="players_standard_batting"]/tbody/tr[contains(@class, "full_table")]'):    csk = batter_row.xpath('./td[@data-stat="player"]/@csk')[0]當我刮掉所有的擊球手時,每個名字都附有 0.01。我嘗試使用以下代碼刪除附加號碼:bat_data = [csk]string = '0.01'result = []for x in bat_data :    if string in x:        substring = x.replace(string,'')        if substring != "":            result.append(substring)    else:        result.append(x)print(result)此代碼刪除了數字,但是,只打印了姓氏:輸出:['Zunino, Mike']此外,名稱周圍有一個括號和引號。名字也是倒序的。1) 如何打印所有擊球手的名字?2) 如何去掉引號和括號?3) 我可以顛倒名字的順序,先打印名字,然后打印姓氏嗎?我希望的最終輸出是所有擊球手的名字,例如:Mike Zunino。我是這個網站的新手......我也是抓取/編碼的新手,非常感謝我能得到的任何幫助!=)
查看完整描述

3 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

1) 打印所有擊球手名稱

print(result)

這將打印結果對象中的所有內容。如果它沒有打印您期望的內容,那么就會發生其他錯誤。

2) 刪除引號 括號是因為它是一個數組對象。試試這個...

print(result[0])

這將告訴解釋器在 0 索引處打印結果。

3) 名字的倒序

嘗試

name = result[0].split(“ “).reverse()[::-1]


查看完整回答
反對 回復 2021-06-22
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

你只得到最后一個擊球手,因為你在第一個循環中每次都覆蓋 csk 的值。首先初始化空列表bat_data,然后將每個batter 添加到其中。


bat_data= []

for batter_row in blah:

    csk = blah

    bat_data.append(csk)

這將為您提供所有擊球手的列表, ['Abreu,Jose0.01', 'Acuna,Ronald0.01', 'Adam,Jason0.01', ...]


然后循環遍歷此列表,但您不必檢查string名稱中是否包含它。只需執行x.replace('0.01', '')然后檢查字符串是否為空。


顛倒名稱順序


substring = substring.split(',')

substring.reverse()

nn = " ".join(substring)

然后將 nn 附加到結果中。


你得到引號和括號是因為你正在打印列表。而是遍歷列表并打印每個項目。


假設您正確獲得了 bat_data,您的代碼已編輯:


for x in bat_data :

    substring = x.replace(string,'')

    if substring != "":

        substring = substring.split(',')

        substring.reverse()

        substring = ' '.join(substring)

        result.append(substring)


for x in result:

    print(x)


查看完整回答
反對 回復 2021-06-22
  • 3 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號