我使用Python + Selenium + Splinter + Firefox来创建交互式网络爬虫。python中的Firefox + Selenium:如何交互式获取元素html?
python脚本提供了选项,然后Selenium打开Firefox并发送一些命令。
现在,我需要让python脚本知道用户想要与之交互的web元素。
的方法我目前使用的是:
右键单击该项目的网站(火狐),点击“检查 元素”,然后单击Firefox的检查,请单击“复制HTML',然后 手动将它提供给脚本,然后该脚本能够继续。
但是,由于显而易见的原因,我觉得这个过程远非完美。
我对JavaScript一无所知,但在阅读other questions后,我感觉到javascript实际上可能是解决方案。
分裂允许运行JavaScript,拿起返回值到Python脚本,因此,从理论上讲:
是否可以运行JavaScript代码,将返回的下一个元素的HTML代码的用户点击?所以命名为方法只会右键单击所需的元素?
澄清了Amey的评论:
的Python脚本打开Firefox窗口,其控制仍然从脚本保留。 与分裂,JavaScript代码可以执行并等待完成/信息返回。 这意味着python脚本可以要求用户单击或右键单击它拥有的Firefox窗口,因此目标是启动一个JavaScript,以“捕捉”用户点击哪个元素。
是否足以让javascript捕捉到所需的元素?
Javascript仍然需要一种方法来查找“下一个需要的元素”,以返回您可以在Selenium中使用的标识符。根据我对你的问题的理解,你可以检索一个页面的全部HTML(使用JS或者Selenium),并且使用一些HTML解析器解析它,并且抓取你需要的东西。 – Amey
感谢您的回答。我扩大了描述,因为我不太清楚情况是否清楚。如果我检索了整个HTML并解析了结果代码,我就无法做到我想要的:捕捉用户点击某个元素并直接使用该代码,而无需通过ID,名称,css专门搜索它,等 –
这看起来很相似,但在不同的上下文中使用:http://stackoverflow.com/questions/17157342/pure-js-detect-if-im-clicking-an-element-within-an-element是那短的解决方案我应该适应我的代码? –