【发布时间】:2020-10-05 09:42:28
【问题描述】:
我正在尝试从网站获取电台信息: https://indiarailinfo.com/atlas
我要获取的表格是一个隐藏表格,仅在文本框中输入文本时才会出现 Hidden table 下面是包含所需表格的div的代码(table class='dropdowntable")
<div style="top: 165px; left: 721px; display: none;" class="list hideslow">
<span style="display:none">LappGetStationList/nzm/0/1/0?&date=1601890451781&seq=9</span>
<table class="dropdowntable" numrows="1" cellspacing="0"><tbody><tr class="rowM1" rownum="0"><td style="display:none">748</td><td class="rcol" nowrap=""><span><span class="listmatch">NZM</span></span></td><td class="icol" nowrap=""><span>Hazrat Nizamuddin</span></td><td class="jcol" nowrap=""><span>NR-Old Delhi Div</span></td><td style="display:none;">NZM/Hazrat Nizamuddin</td></tr><tr class="rowm2" rownum="0"><td style="display:none">748</td><td><span nowrap=""> </span></td><td colspan="2" nowrap=""><span>Nizamuddin East/Sarai KaleKhan Bus Terminal 110013 Delhi NCT</span></td><td style="display:none">NZM/Hazrat Nizamuddin</td></tr><tr><td class="listfooter" colspan="5"><span width="10%" class="listfooterhidden">prev</span> <span width="10%" class="listfooterhidden">next</span> </td></tr><tr><td> </td></tr></tbody></table>
</div>
我曾尝试按班级搜索表格,但没有奏效。欢迎提出任何建议。
更新 1:
这是我正在使用的代码:
driver = webdriver.Chrome()
driver.get('https://indiarailinfo.com/atlas')
searchBox = driver.find_element(By.ID, 'TrkStnListBox')
searchBox.send_keys(code)
searchBox.click()
我尝试过的方法:
1.dropDownTable = driver.find_element(By.PARTIAL_LINK_TEXT,'LappGetStationList')
2.dropDownTable = driver.find_element(By.CLASS_NAME,'list hideslow')
现在以下是我遇到问题的地方:
# hidden = driver.find_element(By.XPATH,"//input[@id='']")
driver.execute_script("arguments[0].setAttribute('style','visibility:visible;');", hidden)
driver.execute_script("arguments[0].click();", dropDownTable)
dropDownTableBody = dropDownTable.find_element(By.TAG_NAME,'tbody')
for entry in dropDownTableBody.find_elements(By.TAG_NAME,'tr'):
if entry.get_attribute('rownum')==0 and entry.get_attribute('class')=='rowM1':
for item in entry.find_elements(By.TAG_NAME,'td'):
if item.get_attribute('class')=='icol':
station.update({
'STATION NAME' : decodeText(item)
})
if item.get_attribute('class')=='jcol':
list = decodeText(item).split('-')
division = list[1][:list[1].find('Div')]
station.update({
'RAILWAY ZONE' : list[0],
'RAILWAY DIVISION' : division
})
print(station)
【问题讨论】:
-
您的代码将有助于确定问题所在。谢谢