繁体   English   中英

Python Selenium WebDriver JavaScript表迭代

[英]Python Selenium WebDriver JavaScript Table Iteration

我已经玩了一段时间的Beautiful Soup,它的工作原理很好,没有javascript的限制。 我正在尝试使用Selenium来弥合工具箱中的空白。 我尝试抓取的网站是http://www.5dimes.eu/livelines/livelines.aspx

**我应该提到我在Windows中,并且无法运行QTWebKit,而我也被告知这是一个选择。

该站点要求您单击复选框以预览表。 一旦能够预览表格,我就以为我很清楚,但可惜没有。

我尝试使用

driver = webdriver.Chrome()
page = driver.get("http://www.5dimes.eu/livelines/livelines.aspx")
driver.find_element_by_xpath("//*[@id='l_26']").click()
html_source = driver.page_source

并且实际上可以使页面单击链接,但是html_source没有表数据。

测试中出现了几个问题。

  1. xpath ID每天都会根据发布的内容进行更改。 一天是26,第二天是27,依此类推。是否有其他方法可以通过班级或文本名称导航到此复选框?

  2. 显示表格后,如何提取此数据?

我在课程信息中注意到它提到了“隐藏”属性

<div id="divLoading" style="width: 100%; text-align: center;" class="Hidden">
        <img id="imgLoading" src="images/scanning.gif">
    </div>

这可能是问题的根源吗? 任何帮助将不胜感激

试试这个

   L= find_elements(By.XPATH,"//div[@id='divl_25']/table/tbody/tr/td[1]");

它将返回包含相同定位符的WebElement列表。(即表内容的第一个td)

要获取第二个td内容,您需要将td索引更改为2。

   L= find_elements(By.XPATH,"//div[@id='divl_25']/table/tbody/tr/td[2]");

上一行将为您提供每一行的所有第二个td。

获取WebElement列表后,循环遍历该列表并从每个元素获取文本。 这样,您可以获得整个表数据。

for ele in L:
        print ele.text;

我希望这对您有用。

PS:我对python,硒python绑定了解不多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM