我已经使用Python与Selenium编写了一个脚本,从目标页面上解析了该脚本,可以按照我尝试在下面进行描述的一些步骤来伸出手,以确保这一点。它确实到达了目的地,但是在从该表中刮擦数据时,它会在控制台"无法找到元素"中显示错误。我尝试使用在线XPATH测试仪查看是否错误,但我发现我在脚本中使用的XPATH用于" TD_DATA"是正确的。我想,我在这里所缺少的是我的知识。希望有人可以研究它,并为我提供解决方法。顺便说一句,我的脚本中给出了网站链接。
链接以查看表的html内容:" https://www.dropbox.com/s/kaom5qzk78xndqn/partial html Content Content CONTEM20THE THE TTHEPER;
到达我脚本能够维护的目标页面的步骤:
- 选择"我已经阅读和理解上面"
- 将此关键字"泵"放在位于"选择医疗设备"下方的输入箱中。
- 选择"泵"的复选框"设备。
- 最后,按搜索按钮
到目前为止我尝试过的脚本:
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('http://apps.tga.gov.au/Prod/devices/daen-entry.aspx')
driver.find_element_by_id('disclaimer-accept').click()
time.sleep(5)
driver.find_element_by_id('medicine-name').send_keys('pump')
time.sleep(8)
driver.find_element_by_id('medicines-header-text').click()
driver.find_element_by_id('submit-button').click()
time.sleep(7)
for item in driver.find_elements_by_xpath('//div[@class="table-responsive"]'):
for tr_data in item.find_elements_by_xpath('.//tr'):
td_data = tr_data.find_element_by_xpath('.//span[@class="hovertext"]//a')
print(td_data.text)
driver.close()
为什么不这样做:
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('http://apps.tga.gov.au/Prod/devices/daen-entry.aspx')
driver.find_element_by_id('disclaimer-accept').click()
time.sleep(5)
driver.find_element_by_id('medicine-name').send_keys('pump')
time.sleep(8)
driver.find_element_by_id('medicines-header-text').click()
driver.find_element_by_id('submit-button').click()
time.sleep(7)
for item in driver.find_elements_by_xpath(
'//table[@id]/tbody/tr/td[@class]/span[@class]/a[@id]'
):
print(item.text)
driver.close()
输出:
27233
27283
27288
27289
27390
27413
27441
27520
25445
27816
27866
27970
28033
28238
26999
28264
28407
28448
28437
28509
28524
28553
28647
28677
28646
也许您想考虑使用driver.page_source保存页面,拉出表,将其保存为HTML文件。然后使用html的熊猫将表打开到数据框中