Python - 初学者刮痧与美丽的汤4 - onmouseover

时间:2017-02-21 08:43:29

标签: python beautifulsoup

我是一名初学者蟒蛇(3)用户,我目前正试图为我的梦幻足球赛季刮取一些运动数据。以前我在一个回合的路上做了这个(在HT-track中下载,转换为excel并使用VBA来组合我的数据)。但是现在我正在尝试学习python以提高我的编码能力。

我想要抓this page但是在选择我想要的行/表时遇到了一些困难。以下是我的代码目前的情况。它仍然有一些代码,我一直在尝试使用它。

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';">

&#34;的onmouseover&#34;似乎是我想要刮掉的桌子的唯一属性。

有谁知道我如何改变这行代码,选择这个属性?

table = soup.find_all('tr')

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

任何帮助都会非常感激,因为我查看了BS4文档但没有运气。

2 个答案:

答案 0 :(得分:1)

正如BeautifulSoup documentation

所述

你可以用这个:

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的全部功能,并以非常优化的方式为您提供结果

答案 1 :(得分:0)

检查this

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