<html xmlns="hyyp://www.w3.org/1999/xhtml">
<head>_</head>
<body>
<form name="Main Form" method="post" action="HTMLReport.aspx?ReportName=...">
<div id="Whole">
<div id="ReportHolder">
<table xmlns:msxsl="urn:schemeas-microsoft-com:xslt" width="100%">
<tbody>
<tr>
<td>_</td>
<td>LIVE</td>
and the data I need is here between <td> </td>
到目前为止我的代码是:
import time
from selenium import webdriver
chromeOps=webdriver.ChromeOptions()
chromeOps._binary_location = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
chromeOps._arguments = ["--enable-internal-flash"]
browser = webdriver.Chrome("C:\\Program Files\\Google\\Chrome\\Application\\chromedriver.exe", port=4445, chrome_options=chromeOps)
time.sleep(3)
browser.get('website')
elem=browser.find_element_by_id('MainForm')
el=elem.find_element_by_xpath('//*[@id="ReportHolder"]')
最后两行代码真的是我在测试xpath故障之前的路径。尝试xpath到超出此点的任何内容会产生noSuchElementException。
有人可以向我解释我如何从表格中提取数据吗?
我目前的想法是,也许我必须将“某些东西”传递到xml树api并通过它访问它。虽然我不知道如何抓住它。
如果有人能给我下一步,我会非常感激,感觉有点像我现在在黑暗的房间里举着蜡烛。
答案 0 :(得分:0)
这很简单。这是一个时间问题。
解决方案:在xpath请求之前放置time.sleep(5)。
browser.get('http://www.mmgt.co.uk/HTMLReport.aspx?ReportName=Fleet%20Day%20Summary%20Report&ReportType=7&CategoryID=4923&Startdate='+strDate+'&email=false')
time.sleep(5)
ex=browser.find_element_by_xpath('//*[@id="ReportHolder"]/table/tbody/tr/td')
xpath正在请求动态内容的引用。
该表是动态内容,加载该内容需要更长的时间,然后它才能使python程序到达行:
ex=browser.find_element_by_xpath('//*[@id="ReportHolder"]/table/tbody/tr')
来自上一行:
browser.get('http://www.mmgt.co.uk/HTMLReport.aspx?ReportName=Fleet%20Day%20Summary%20Report&ReportType=7&CategoryID=4923&Startdate='+strDate+'&email=false')