如何使用 Selenium-Python 抓取下拉菜单?
How to scrape a dropdwon menu with Selenium-Python?
我必须从这个网页上抓取数据:http://www.mlsa.am/?page_id=368.The 网页是亚美尼亚语。这是一个下拉菜单,其中的选项包括:地区、地区、社区、补贴类型、月份和年份。一旦这些选项被 selected,一个 table 就会出现,其中包含有关这些地方的公民的信息,这些公民获得了不同种类的补贴。我现在面临的困难是,第二个下拉菜单(区域)取决于您在第一个下拉菜单中 select 的选项,而第三个(社区)取决于您在前一个下拉菜单中 select 的选项。我应该如何为这种类型的网页编写代码?
这是您检查网页时的样子
<!--Մարզեր-->
<div class="td-pb-row">
<div class="td-pb-span2"></div>
<div class="td-pb-span5">
Մարզեր <span class="ben-required">*</span>
<select id="ref_regions_id" name="ref_regions" style="border:1px solid #0790A2;" >
<option value="0" > Ընտրել </option>
<option value="1"> ԱՐԱԳԱԾՈՏՆ</option>
value="2"> ԱՐԱՐԱՏ</option>
<option value="3"> ԱՐՄԱՎԻՐ</option>
<option value="4"> ԳԵՂԱՐՔՈՒՆԻՔ</option>
<option value="5"> ԼՈՌԻ</option>
<option value="6"> ԿՈՏԱՅՔ</option>
<option value="7"> ՇԻՐԱԿ</option>
<option value="8"> ՍՅՈՒՆԻՔ</option>
<option value="9"> ՎԱՅՈՑ ՁՈՐ</option>
<option value="10"> ՏԱՎՈՒՇ</option>
<option value="11"> ԵՐԵՎԱՆ</option>`
</select>
</div>
我将 selenium 与 python 一起使用,到目前为止,这是我的代码:
import time
import requests
from selenium import webdriver
from selenium.common.exceptions import WebDriverException
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.keys import Keys
chrome_path = r"C:\Users\ivrav\selenium-2.25.0\Driver\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
print("loading url into browser...")
def get_all_pages():
payload={'value':'1'}
driver.get("http://www.mlsa.am/?page_id=368")
print(url.text)
time.sleep(2)
要 select 您在 HTML 中显示的下拉列表中的选项,我会使用 Python 中的 Select()
class:
from selenium.webdriver.support.ui import Select
select = Select(driver.find_element_by_id('ref_regions_id'))
然后,您可以select这样的选项:
select.select_by_text("ԱՐՄԱՎԻՐ")
或者,在选项元素上使用 value
属性:
select.select_by_value(0)
最后,您可以在下拉列表中获取所有可用选项:
options = select.options
for option in options:
print(option)
要根据前一个下拉菜单处理每个下拉菜单,您只需要 select 根据一组预先确定的选项以正确的顺序为每个下拉菜单选择一个选项。每个下拉菜单都有一个唯一的 ID,因此应该有所帮助。
我必须从这个网页上抓取数据:http://www.mlsa.am/?page_id=368.The 网页是亚美尼亚语。这是一个下拉菜单,其中的选项包括:地区、地区、社区、补贴类型、月份和年份。一旦这些选项被 selected,一个 table 就会出现,其中包含有关这些地方的公民的信息,这些公民获得了不同种类的补贴。我现在面临的困难是,第二个下拉菜单(区域)取决于您在第一个下拉菜单中 select 的选项,而第三个(社区)取决于您在前一个下拉菜单中 select 的选项。我应该如何为这种类型的网页编写代码?
这是您检查网页时的样子
<!--Մարզեր-->
<div class="td-pb-row">
<div class="td-pb-span2"></div>
<div class="td-pb-span5">
Մարզեր <span class="ben-required">*</span>
<select id="ref_regions_id" name="ref_regions" style="border:1px solid #0790A2;" >
<option value="0" > Ընտրել </option>
<option value="1"> ԱՐԱԳԱԾՈՏՆ</option>
value="2"> ԱՐԱՐԱՏ</option>
<option value="3"> ԱՐՄԱՎԻՐ</option>
<option value="4"> ԳԵՂԱՐՔՈՒՆԻՔ</option>
<option value="5"> ԼՈՌԻ</option>
<option value="6"> ԿՈՏԱՅՔ</option>
<option value="7"> ՇԻՐԱԿ</option>
<option value="8"> ՍՅՈՒՆԻՔ</option>
<option value="9"> ՎԱՅՈՑ ՁՈՐ</option>
<option value="10"> ՏԱՎՈՒՇ</option>
<option value="11"> ԵՐԵՎԱՆ</option>`
</select>
</div>
我将 selenium 与 python 一起使用,到目前为止,这是我的代码:
import time
import requests
from selenium import webdriver
from selenium.common.exceptions import WebDriverException
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.keys import Keys
chrome_path = r"C:\Users\ivrav\selenium-2.25.0\Driver\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
print("loading url into browser...")
def get_all_pages():
payload={'value':'1'}
driver.get("http://www.mlsa.am/?page_id=368")
print(url.text)
time.sleep(2)
要 select 您在 HTML 中显示的下拉列表中的选项,我会使用 Python 中的 Select()
class:
from selenium.webdriver.support.ui import Select
select = Select(driver.find_element_by_id('ref_regions_id'))
然后,您可以select这样的选项:
select.select_by_text("ԱՐՄԱՎԻՐ")
或者,在选项元素上使用 value
属性:
select.select_by_value(0)
最后,您可以在下拉列表中获取所有可用选项:
options = select.options
for option in options:
print(option)
要根据前一个下拉菜单处理每个下拉菜单,您只需要 select 根据一组预先确定的选项以正确的顺序为每个下拉菜单选择一个选项。每个下拉菜单都有一个唯一的 ID,因此应该有所帮助。