1

我玩 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>

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

4

1 回答 1

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;

我希望这对你有用。

PS:我对 python、selenium-python 绑定不太了解。

于 2013-01-29T06:51:13.237 回答