如何使用Selenium循环并废弃几页数据 - OpenML

时间:2018-05-10 08:43:23

标签: html python-3.x selenium

如果我们转到链接:https://www.openml.org/t/31#!taskruns,你会看到有大约400k的结果,我正在尝试使用Python 3.6.5和Selenium从所有这些结果中获取关键信息。附件是我目前拥有的代码。

Picture of Code and Results它适用于前300个结果

我的问题是,我只得到前300个结果。如果你继续向下滚动链接,你会注意到有超过300个结果,我使用selenium因为我认为它可以解析动态信息(即你向下滚动的结果越多)

我的想法是,我希望它解析此页面上的所有信息,直到它到达“加载更多...没有加载?现在转到下一个结果...”然后继续转到下一页并执行相同的操作,直到所有400k结果都被废弃。

我提供的链接的HTML只有200个结果,然后它包含指向下一个200

的链接
DB::selectRaw()

我可以以某种方式创建一个LOOP来读取HTML并废弃前200个结果,然后转到下一个200的xpath并继续这样做直到所有结果都被废弃?

编辑:相关代码是:(我离开屏幕截图,以便您看到我目前获得的输出)

<a href="search?type=run&amp;from=300&amp;q=run_task.task_id%3A31">Not loading? Go to the next results now.</a>

1 个答案:

答案 0 :(得分:0)

我认为你遇到了动态呈现的页面。执行某些操作后,将呈现除前300行以外的其余行(例如,按下下一个按钮或移动滚动条)。

如果您查看网络流量,下面是发送的HTTP请求之一: https://www.openml.org/search?type=run&from=100&q=run_task.task_id%3A31&dataonly=1

这可能是通过jQuery库以AJAX方式解决的。

如果您想要抓取数据而不是点击主页面,我建议您使用AJAX查询。

免责声明:网站可能随时改变后端服务的运作方式。