【发布时间】:2018-07-21 09:54:13
【问题描述】:
借助 Selenium 和 Python。我想抓取一个有嵌套下拉菜单的网页。我只发布下面的嵌套部分:
<div class="dropDown active" data-dropdown-block="FOOTBALL_COMPSEASON" data-dropdown-default="All Seasons">
<div class="label" id="dd-FOOTBALL_COMPSEASON">Filter by Season</div>
<div class="current" data-dropdown-current="FOOTBALL_COMPSEASON" role="button" tabindex="0" aria-expanded="false" aria-labelledby="dd-FOOTBALL_COMPSEASON" data-listen-keypress="true" data-listen-click="true">
2018/19
</div>
<ul class="dropdownList" data-dropdown-list="FOOTBALL_COMPSEASON" role="listbox" aria-labelledby="dd-FOOTBALL_COMPSEASON" data-listen-keypress="true" data-listen-click="true">
<li role="option" tabindex="0" data-option-name="All Seasons" data-option-id="-1" data-option-index="-1">
All Seasons
</li>
<li role="option" tabindex="0" data-option-name="2018/19" data-option-id="210" data-option-index="0">
2018/19
</li>
<li role="option" tabindex="0" data-option-name="2017/18" data-option-id="79" data-option-index="1">
2017/18
</li>
<li role="option" tabindex="0" data-option-name="2016/17" data-option-id="54" data-option-index="2">
2016/17
</li>
</ul>
</div>
这是它的外观截图:
所以,我想让爬虫点击下拉菜单并选择 2017/18。
我第一次尝试这个:
driver.get(_url)
select_element = driver.find_elements_by_class_name("dropdownList")[1]
由于dropdownList类在HTML中被多次使用,而我想要的元素位于第二个位置,即<ul class="dropdownList"....是第二次使用dropdown类,所以我使用[1]来获取第二个孩子。
然后我得到这个错误:
文件“shots_2017_18.py”,第 15 行,在 shot_2017_18 中 select_element = driver.find_elements_by_class_name("dropdownList")1 IndexError: list 索引超出范围
我应该改变什么或做什么,以便爬虫可以从下拉列表中选择 2017/18 项目并可以爬取?
【问题讨论】:
-
你能点击下拉菜单吗?我看到它不是使用 select 和 span 标签制作的。
-
我的意思是 python 和 selenium ?
-
其实这就是我想要做的。但是导致上述错误,并且如果您检查下面的答案,也会产生我在下面发布的错误。
标签: python selenium web-crawler