Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python和selenium从表中抓取数据时面临的问题_Python_Selenium_Xpath_Web Scraping_Web Crawler - Fatal编程技术网

使用python和selenium从表中抓取数据时面临的问题

使用python和selenium从表中抓取数据时面临的问题,python,selenium,xpath,web-scraping,web-crawler,Python,Selenium,Xpath,Web Scraping,Web Crawler,我已经编写了一个脚本,使用python结合selenium从目标页面解析表,为了清晰起见,我尝试在下面描述一些步骤,然后可以访问目标页面。它确实到达了目标,但在从该表中抓取数据时,它抛出了一个错误,显示在控制台中无法定位元素。我尝试使用在线XPathTester查看它是否错误,但我发现我在脚本中为td_数据使用的xpath是正确的。我想,我所缺少的是我所不知道的。希望有人来看看,并为我提供一个解决办法。 顺便说一句,网站链接是在我的脚本中给出的 链接以查看表格的html内容: 到达脚本能够维护的

我已经编写了一个脚本,使用python结合selenium从目标页面解析表,为了清晰起见,我尝试在下面描述一些步骤,然后可以访问目标页面。它确实到达了目标,但在从该表中抓取数据时,它抛出了一个错误,显示在控制台中无法定位元素。我尝试使用在线XPathTester查看它是否错误,但我发现我在脚本中为td_数据使用的xpath是正确的。我想,我所缺少的是我所不知道的。希望有人来看看,并为我提供一个解决办法。 顺便说一句,网站链接是在我的脚本中给出的

链接以查看表格的html内容:

到达脚本能够维护的目标页面的步骤:

选择我已阅读并理解以上内容 将此关键字pump放入位于“选择医疗设备”右下方的输入框中。 选中为泵找到的设备复选框。 最后,按下搜索按钮 到目前为止,我已尝试使用的脚本:

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\u source保存页面,拉出表格,将其保存为html文件。然后使用pandas from html将表打开到一个数据框中

能否请您共享html以便我验证逻辑?谢谢您的回答,Monika。我已经用一个指向html内容的链接更新了我的帖子rows://body[@class]/div[@id]/div[@id]/div[@class]/div[@id]/div[@class]/form[@id]/div[@id]/div[@class]/div[@id]/div/div[@class]/table[@id]/tbody/tr谢谢你的解决方案,詹姆斯·辛纳。我从来没有使用selenium处理过表数据,这就是我把脚本弄糟的原因。感谢James Schinner的回答。请在脚本中将xpath替换为“//div[@class=table responsive]//td[@class=row-odd]”,以便我可以接受您的答案。您刚才提供的一个非常脆弱,如果在该网页中进行任何更改都会损坏。完成,但它给了我一个错误:selenium.common.exceptions.ElementNotVisibleException:Message:element不可见会话信息:chrome=59.0.3071.109驱动程序信息:chromedriver=2.30.477700 57494ad8732195794a7b32078424f92a5fce41,platform=Windows NT 10.0.15063 x86\u 64恐怕我要离开它了。我很高兴它解决了你的问题