【问题标题】:Converting BS4 resultset to NxN array relative to headers (separate BS4 resultset)将 BS4 结果集转换为相对于标头的 NxN 数组(单独的 BS4 结果集)
【发布时间】:2017-12-06 04:00:24
【问题描述】:

TL;DR 我需要将 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 数组/矩阵?此外,我怎样才能获得附加的标题?

感谢阅读和/或帮助!

【问题讨论】:

标签: python arrays beautifulsoup resultset


【解决方案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)

【讨论】:

  • 德米特里,这太棒了。感谢您的帮助!
  • 完成!再次感谢您的宝贵时间,德米特里。
猜你喜欢
  • 2017-05-03
  • 2015-12-13
  • 2012-01-20
  • 2011-08-11
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多