Python中具有多个属性的美丽汤查询

时间:2012-04-11 01:13:14

标签: python beautifulsoup

我正在尝试查找HTML的这些部分,但只查找某个月(04)的部分,区别在于链接的结尾。

<td class="">
    <div class="dayContainer">
        <a href="/parks/magic-kingdom/calendardayview/?asmbly_day=20120402"> 
            <p class="day"> 2</p> 
            <p class="moreLink">
                Park Hours
                <br />
                8:00 AM - 1:00 AM
                <br /><br/>
                Extra Magic Hours
                <br />
                7:00 AM - 8:00 AM
                <br /><br/>
            </p> 
        </a> 
    </div>
</td>

我可以使用findAll('div', attrs={'class':'dayContainer'})查找所有日期,但这会为我提供网站中的所有日期。我尝试了this示例,但我尝试的所有内容都给我留下了空白的结果。以下是我现在要查找的部分:

days = soup.findAll(lambda date: date.name == 'a' and date.text[-4:-2] == '04' and date.findParent('div', attrs={'class':'dayContainer'}))
print days

知道我哪里出错了吗?谢谢! 如果有人需要,这里是the site

1 个答案:

答案 0 :(得分:6)

在查看您发布的网站链接后,我发现每个月的日历实际上都包含在名为“month_name2012”的div中。

所以对于四月,你可以这样做:

april_c = soup.find('div', attrs={'id':'april2012'})
parking_apr = april_c.findAll('div', 'dayContainer')
for item in parking_apr:
    print item.text

这会给你:

  

1Park Hours 8:00 AM - 12:00 AMExtra Magic Hours 7:00 AM - 8:00 AMExtra   魔术时间12:00至凌晨3:00

     

2Park Hours上午8:00 - 凌晨1:00魔术时间早上7:00 - 上午8:00

     

3Park Hours上午8:00 - 凌晨1:00魔术时间早上7:00 - 上午8:00

     

4Park Hours上午8:00 - 凌晨1:00魔术时间早上7:00 - 上午8:00

     

5Park Hours上午8:00 - 凌晨1:00魔术时间早上7:00 - 上午8:00

     

6Park Hours 8:00 AM - 12:00 AMExtra Magic Hours 7:00 AM - 8:00 AMExtra   魔术时间12:00至凌晨3:00

     

7Park Hours上午8:00 - 凌晨1:00魔术时间早上7:00 - 上午8:00

     

8Park Hours 8:00 AM - 12:00 AMExtra Magic Hours 7:00 AM - 8:00 AMExtra   魔术时间12:00至凌晨3:00

     

...