只能用 Python 和 BS4 抓取 Table 的部分
Can Only Scrape Portion of Table with Python and BS4
我正在尝试用 this wikipedia page
的草稿订单抓取 table
我遇到了一个问题,唯一提取的数据来自背景颜色不同的行(整数旁边带有“*”的行)。
我的代码如下:
wikiURL = "https://en.wikipedia.org/wiki/2012_NFL_Draft"
#create array to store player info in
teams_players = []
# request and parse wikiURL
r = requests.get(wikiURL)
soup = BeautifulSoup(r.content, "html.parser")
#find table in wikipedia
playerData = soup.find('table', {"class": "wikitable sortable"})
for row in playerData.find_all('tr'):
cols = row.find_all('td')
if len(cols) == 9:
teams_players.append((cols[3].text.strip(), cols[4].text.strip()))
for team, player in teams_players:
print('{:35} {}'.format(team, player))
那是因为 if len(cols) == 9:
条件。您需要:
- 跳过第 header 行
- 在每个
tr
中查找 td
和 th
元素
- 跳过计数小于 6 的行
固定版本:
for row in playerData.find_all('tr')[1:]:
cols = row.find_all(['td', 'th'])
if len(cols) < 6:
continue
teams_players.append((cols[5].text.strip(), cols[6].text.strip()))
打印:
QB Stanford
QB Baylor
...
RB Abilene Christian
QB NIU
我正在尝试用 this wikipedia page
的草稿订单抓取 table我遇到了一个问题,唯一提取的数据来自背景颜色不同的行(整数旁边带有“*”的行)。
我的代码如下:
wikiURL = "https://en.wikipedia.org/wiki/2012_NFL_Draft"
#create array to store player info in
teams_players = []
# request and parse wikiURL
r = requests.get(wikiURL)
soup = BeautifulSoup(r.content, "html.parser")
#find table in wikipedia
playerData = soup.find('table', {"class": "wikitable sortable"})
for row in playerData.find_all('tr'):
cols = row.find_all('td')
if len(cols) == 9:
teams_players.append((cols[3].text.strip(), cols[4].text.strip()))
for team, player in teams_players:
print('{:35} {}'.format(team, player))
那是因为 if len(cols) == 9:
条件。您需要:
- 跳过第 header 行
- 在每个
tr
中查找 - 跳过计数小于 6 的行
td
和 th
元素
固定版本:
for row in playerData.find_all('tr')[1:]:
cols = row.find_all(['td', 'th'])
if len(cols) < 6:
continue
teams_players.append((cols[5].text.strip(), cols[6].text.strip()))
打印:
QB Stanford
QB Baylor
...
RB Abilene Christian
QB NIU