我已经和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没有表数据。
测试时遇到了几个问题。
xpath id每天根据发布的内容进行更改。有一天它是第二天它是26等等。有没有另一种方法可以通过类或文本名称导航到这个复选框?
显示表格后,如何提取此数据?
我在班级信息中注意到它提到了“隐藏”属性
<div id="divLoading" style="width: 100%; text-align: center;" class="Hidden">
<img id="imgLoading" src="images/scanning.gif">
</div>
这可能是问题的根源吗?任何帮助将不胜感激
答案 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绑定知之甚少。