【发布时间】:2018-02-18 06:49:17
【问题描述】:
我在使用 beautifulsoup 将足球运动员的详细信息刮到一个可行的 Pandas 表中时遇到了很大的困难。
问题是我抓取的一些数据是“额外的”并且用废话填满了我的表格行。例如:
import requests
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0"}
page = requests.get('https://www.transfermarkt.co.uk/manchester-united/startseite/verein/985', headers=HEADERS)
soup = BeautifulSoup(page.content, 'html.parser')
playerdata = soup.find_all(class_='posrela')
names = [';'.join(pt.findAll(text=True)) for pt in playerdata]
df = pd.DataFrame(names)
df = pd.DataFrame([sub.split(";") for sub in names])
print(df.replace('^$', np.nan, regex=True))
结果:
python testing5.py
0 1 2 3
0 David de Gea D. de Gea Keeper None
1 Sergio Romero S. Romero Keeper None
2 Joel Pereira J. Pereira Keeper None
3 Eric Bailly E. Bailly Centre-Back
4 Victor Lindelöf V. Lindelöf Centre-Back None
5 Marcos Rojo M. Rojo Centre-Back
6 Chris Smalling C. Smalling Centre-Back None
7 Phil Jones P. Jones Centre-Back
8 Daley Blind D. Blind Left-Back None
9 Luke Shaw Luke Shaw Left-Back None
10 Matteo Darmian M. Darmian Right-Back None
11 Antonio Valencia A. Valencia Right-Back None
12 Nemanja Matic N. Matic Defensive Midfield None
13 Michael Carrick M. Carrick Defensive Midfield
14 Paul Pogba P. Pogba Central Midfield None
15 Ander Herrera A. Herrera Central Midfield None
16 Marouane Fellaini M. Fellaini Central Midfield None
17 Ashley Young A. Young Left Midfield None
18 Henrikh Mkhitaryan H. Mkhitaryan Attacking Midfield None
19 Juan Mata Juan Mata Attacking Midfield None
20 Jesse Lingard J. Lingard Left Wing None
21 Romelu Lukaku R. Lukaku Centre-Forward None
22 Anthony Martial A. Martial . Centre-Forward
23 Marcus Rashford M. Rashford Centre-Forward None
24 Zlatan Ibrahimovic Z. Ibrahimovic Centre-Forward
如您所见,在我抓取空数据的地方,它会将数据推送到错误的单元格中。您可能会问为什么我有第 4 列,我将在其中插入更多数据,但现在我需要清理第 3 列。
如您所见,我首先尝试使用正则表达式将空格替换为 NaN。但无论我尝试什么,我似乎都无法“选择”空单元格。我联系不上他们!
当我尝试将“名称”视为列表时,解释器告诉我这不是列表而是结果集!
想知道是否有人可以提供帮助,作为一个编程菜鸟,我已经取得了很大的进步,但已经碰壁了。
【问题讨论】:
标签: python pandas beautifulsoup