2017-07-02 23 views
0

TL; DR BS4結果セットリスト(単一列)をNxN配列にする必要がありますが、どのようにする必要がありますか?そして、BS4の結果リストでもあるヘッダをどのように添付することができますか?以下のコード。ありがとうございました!BS4結果セットをNxN配列に変換する(別のBS4結果セット)

私はスポーツデータをスクレープしようとしていますが、結果セットをNxN配列に変換する際に問題があります。また、私は同じ方法で掻き取られたヘッダーを含めることを試みています。これまでのコードはこれまで通りです:

import requests 
from bs4 import BeautifulSoup 
from __future__ import print_function 
import numpy as np 

url=input("Paste player link and specific year ") 
r= requests.get(url) 
html_content=r.text 
soup=BeautifulSoup(html_content,"lxml") 

body = soup.body 
table=body.table 
tbody=table.tbody 

headers = table.find_all("th") 
statistics = tbody.find_all("td") 

def string_stats(): 
    for stat in statistics: 
     print (stat.string) 

def string_headers(): 
    for head in headers: 
     print (head.string) 

string_stats_list = string_stats() 
string_stats_list 

この結果、tdタグ要素だけが文字列(または目標)として垂直リストに表示されます。

私の質問は次のとおりです。この単一の列リストをNxN配列/マトリックスにするにはどうすればよいですか?また、ヘッダーを添付するにはどうすればよいですか?

お読みいただきありがとうございました!

+0

あなたが現在 –

+0

http://www.footballdb.com/players/mike-evans-evansmi03/gamelogs お礼を解析している本当のリンクをお願いします! –

答えて

1
import pandas as pd 
import requests 
from bs4 import BeautifulSoup 

url='http://www.footballdb.com/players/mike-evans-evansmi03/gamelogs' 
r= requests.get(url) 
html_content=r.content 
soup=BeautifulSoup(html_content,"lxml") 

body = soup.body 
table=body.table 

headers = table.find_all("th") 

headers_list = [i.text for i in headers] 

string_stats_list = [] 
row = [] 
for i in table.select('tr')[1:]: 
    for j in i.select('td'): 
     row.append(j.text) 
    string_stats_list.append(row) 
    row = [] 

df = pd.DataFrame(data=string_stats_list, columns=headers_list) 
+0

ドミトリー、これは素晴らしいです。私はあなたの助けに感謝します! –

+0

@Dennis、私の答えがあなたに合っていれば、緑のチェックマークを付けることでそれを受け入れることができますか? –

+0

完了!あなたのお時間をありがとう、ドミトリー。 –

関連する問題