Python Selenium WebDriver JavaScript表迭代

时间:2013-01-29 03:37:26

标签: javascript python selenium selenium-webdriver beautifulsoup

我已经和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等等。有没有另一种方法可以通过类或文本名称导航到这个复选框?

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

  3. 我在班级信息中注意到它提到了“隐藏”属性

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

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

1 个答案:

答案 0 :(得分:1)

尝试这样的事情

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

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

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

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

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

获取WebElements列表后,循环遍历该列表并从每个元素获取文本。通过这种方式,您可以获得整个表格数据。

for ele in L:
        print ele.text;

我希望这对你有用。

P.S:我对python,selenium-python绑定知之甚少。