私はbeautifulsoupを使ってサッカー選手の細部を作業可能なパンダテーブルにこすっているのが本当に難しいです。パンダ - 空のセルを扱う
私が掻き集めるデータの一部は「余分な」もので、ナンセンスでテーブルの行をいっぱいにしています。
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の空白。しかし、私が何をしようと、私は空のセルを "選択"することはできません。私は彼らに行くことができない!
私はリストのように '名前'を扱うと、これはリストではなく結果セットであると通訳者に伝えられます。
誰かが助けてくれるのであれば、私は多くの進歩を遂げましたが、レンガの壁にぶつかりました。
偉大な答え、私は美しいとあなたと提携して戦った(正しいことを示唆したように)最初の場所で正しいソースデータを取得します。明らかに私はあまりうまくいきませんでした!選択するとあまり良くありません。しかし、私はあなたが100%正しかったと思っています。まず最初にソースを入手するほうがはるかに効率的なやり方です。ありがとうございます。 – charliedontsurf
@charliedontsurf、うれしい!あなたはより多くのデータをスクラップしなければならないと確信しています。あなたが右クリックしてinspectをクリックするのを好むクロムを使用しているなら、websrcapingのための最も優れたツールです。ツリー上で作業し、ページ上の位置を強調表示することができます。その後、一度にbs4レベルでフィルタリングしてみてください:) – DJK
私は別の質問があります(私は良い進歩を遂げました!)しかし、私が描くアイテムのいくつかは時々abのプレフィックスと時には[b '... ] これはなぜわからないのですか?私は先に進む前に結果を整理したいと思っています。私はそれが私が掻いているデータの種類と関係があると思います... – charliedontsurf