簡體   English   中英

清理網頁解析

[英]Cleaning up web parsing

我只是在練習並決定我想知道從 1980 年到 2015 年 PGA 排名第一的賺錢者

    from bs4 import BeautifulSoup
import urllib.request
base_url = 'http://www.pgatour.com/stats/stat.109.'
def get_links():
    urls = []
    for i in range(1980,2015):
        urls.append(base_url+str(i)+'.html')
    return urls
def get_first(urls):
    for url in urls:
        page = urllib.request.urlopen(url)
        soup =  BeautifulSoup(page.read())
        player = soup.findAll('td',{'class':'player-name'})
        print (player)

get_first(get_links())

所以這個問題我遇到了兩個問題。

  1. 這將返回和整個鏈接,而我只想要玩家的名字。

  2. 我只想要第一個球員,而不是整整幾年的價值。

我試圖通過將 findAll 更改為 find 來解決問題 2。 不幸的是,只返回了 Player Name,因為這是所有頁面的第一個條目。 任何幫助將不勝感激。 謝謝!

要獲得唯一的第一個玩家名稱,您應該使用以下代碼:

player = soup.find_all('td',{'class':'player-name'})
if len(player) > 2:
    first_player_name = player[1].find('a').get_text()

我跳過第一個“玩家”(因為 td 只包含列的標題 - Player Name ,那么現在你可以用第一個玩家的名字做任何你想做的事情(打印,添加到一些列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM