python-初学者用美丽的汤刮擦4-杂乱无章



我是初学者Python(3)用户,目前我正在尝试为我的幻想足球赛季刮擦一些体育统计数据。以前,我以一种方式进行了操作(在HT-Track下载,转换为Excel并使用VBA结合我的数据)。但是现在我试图学习Python以提高我的编码能力。

我想刮擦此页面,但在仅选择我想要的行/表方面遇到了一些困难。这是我的代码当前的立场。它仍然有一些代码,我一直在尝试使用它。

from urllib.request import urlopen  # import the library
from bs4 import BeautifulSoup   # Import BS
from bs4 import SoupStrainer    # Import Soup Strainer
page = urlopen('http://www.footywire.com/afl/footy/ft_match_statistics?mid=6172') # access the website
only_tables = SoupStrainer('table') # parse only table elements when parsing
soup = BeautifulSoup(page, 'html.parser')   # parse the html

# for row in soup('table',{'class':'tbody'}[0].tbody('tr')):
#   tds = row('td')
#   print (tds[0].string, tds[1].string)
# create variables to keep the data in
team = []
player = []
kicks = []
handballs = []
disposals = []
marks = []
goals = []
tackles = []
hitouts = []
inside50s = []
freesfor = []
freesagainst = []
fantasy = []
supercoach = []
table = soup.find_all('tr')

# print(soup.prettify())
print(table)

现在我可以从页面中选择所有" tr",但是我只选择具有以下属性的行遇到麻烦:

<tr bgcolor="#ffffff" onmouseout="this.bgColor='#ffffff';" onmouseover="this.bgColor='#cbcdd0';">

" onmouseover"似乎是我要刮擦表的唯一常见/独特的属性。

有人知道我如何更改此代码,选择此属性?

table = soup.find_all('tr')

从这里开始,我相信我可以将数据放入数据框架中,希望我可以导出到CSV。

当我看过BS4文档而没有运气时,任何帮助将不胜感激。

,如BeautifulSoup文档上所述

您可以使用此:

table = soup.findAll("tr", {"bgcolor": "#ffffff", "onmouseout": "this.bgColor='#ffffff'", "onmouseover": "this.bgColor='#cbcdd0';"})

更多,您也可以使用以下方法:

tr_tag = soup.findAll(lambda tag:tag.name == "tr" and tag["bgcolor"] == "#ffffff") and tag["onmouseout"] = "this.bgColor='#ffffff'" and tag["onmouseover"] = "this.bgColor='#cbcdd0';"

上述方法的优点是它使用BS的全部功能,并以非常优化的方式为您提供结果

检查以下内容:

soup.find_all("tr", attrs={"onmouseover" : "this.bgColor='#cbcdd0';"})

最新更新