用Python从下拉菜单中抓取

2024-09-30 00:29:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个使用Python的新手,尝试在其中检索数据 this Site使用python3.6.0版

有两个下拉列表,第二个的数据取决于第一个的选择。在

首先:“组织Adi” 秒:“UEVCB Adi”

源代码中的所有选项如下:

<option value="0" selected="selected">TÜMÜ</option> #this is default value when we open the page
<option value="10374">1461 TRABZON ELEKTRİK ÜRETİM A.Ş</option>
<option value="9426">2M ELEKTRİK ÜRETİM SANAYİ VE TİCARET ANONİM ŞİRKETİ</option>

这些是firs下拉选项,有将近800个选项。在

除非点击第二个下拉框,否则我们无法在不检查页面的情况下看到第二个下拉选项。(单击这两个下拉列表会打开一个搜索框。)

第二个下拉列表打开所选组织的单位列表。在

当两个下拉列表中的选项被选中时,它会生成一个表格数据,我们正在尝试获取所有单位的数据。在

我不能用一个程序来处理所有单元的数据,所以我决定单独废弃它们。在

使用此代码:

^{pr2}$

通过这个代码,我们可以从第一个下拉菜单中选择使用搜索功能和回车键。在

当它到达第二个时,它生成ImportError: sys.meta_path is None, Python is likely shutting down

我该怎么处理?在

谢谢。在


Tags: 数据代码列表isvalue选项site单位
1条回答
网友
1楼 · 发布于 2024-09-30 00:29:38

您的代码似乎对StaleElementException以及异常Element is not clickable at point...敏感。尝试下面的代码为网页抓取部分,并让我知道结果:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from bs4 import BeautifulSoup
import pandas as pd 

url = 'https://seffaflik.epias.com.tr/transparency/uretim/planlama/kgup.xhtml' #
driver = webdriver.Chrome()
driver.get(url)
wait = WebDriverWait(driver, 20)
driver.maximize_window()

wait.until_not(EC.visibility_of_element_located((By.ID,'j_idt15'))) # wait until modal disappeared
wait.until(EC.element_to_be_clickable((By.ID,'j_idt102:distributionId_label'))).click() # organization drop-down
wait.until(EC.element_to_be_clickable((By.ID, 'j_idt102:distributionId_filter'))).send_keys('1461' + u'\ue007') # select required
wait.until_not(EC.visibility_of_element_located((By.ID,'j_idt179_modal'))) # wait until modal disappeared
wait.until(EC.element_to_be_clickable((By.ID,'j_idt102:uevcb_label'))).click() # unit drop-down
wait.until(EC.element_to_be_clickable((By.ID, 'j_idt102:uevcb_filter'))).send_keys('SAMA' + u'\ue007') # select unit
wait.until(EC.element_to_be_clickable((By.ID,'j_idt102:goster'))).click() # click Apply
wait.until_not(EC.visibility_of_element_located((By.ID,'j_idt15'))) # wait until modal disappeared

soup = BeautifulSoup(driver.page_source)
....

相关问题 更多 >

    热门问题