硒替代python?访问Web元素的最快方法

时间:2018-06-15 20:09:46

标签: python brute-force

我正在尝试创建一个暴力破坏者。在我当前的版本中,我只是使用selenium并以这种方式查找web元素。这似乎很慢,可能是因为它加载了整个网站。 (只是本地托管的面板)。任何人都知道更好的方法来做到这一点,也许没有制作自动浏览器?对于任何想知道的人,我试图找到2个元素,并且没有api等,所以我假设我不能通过python中的请求lib来做到这一点。

2 个答案:

答案 0 :(得分:1)

BeautifulSoup是用于在Python中解析网页的事实上的标准库。它对于服务器渲染或静态内容非常有用。它会在防止网页抓取的网站上出现问题,会在客户端呈现时动态更新,或者需要Cookie或身份验证。

那么当BeautifulSoup没有削减它时你会使用什么?

结帐Cypress。它是Javascript原生的,但它在Python,Node,Ruby,php和.NET中有backend adapters

即使没有适配器,赛普拉斯也是e2e测试和浏览器自动化的强大工具,可以消除Selenium带来的所有痛苦。如果你试图获取的信息需要身份验证,cookie,交互,或者受​​到反机器人代码的限制,请试一试。

如果您已经知道使用浏览器的开发工具检查请求,可以在这里停止阅读。其他...

最后,所有这一切都假设您已经在浏览器的开发工具中检查了网络选项卡,以验证您所寻找的数据是否以易于解析的格式传输到XHR。如果你还没有看过,那么这里有一些Chrome说明:

右键点击感兴趣的页面 - >检查 - >网络 - >刷新页面 - >点击xhr过滤器

然后:

浏览每个api调用的响应选项卡,以查看感兴趣的数据是否隐藏在普通视野中。如果您需要的数据在那里,请检查请求选项卡,看看您的浏览器是否必须查看您必须发送的请求参数才能获得它。如果这是一个简单的GET请求,您可以直接将该网址复制到您的浏览器中,这将是您想要的数据。如果是POST,您可以尝试使用像Servistate或Postman这样的工具来查看哪些内容。我将相同的请求复制到浏览器中,然后在POST主体和其他参数中拉出内容或交换内容以查看它是如何工作的以及我可以逃脱的内容。如果它不需要你有一个cookie,你可以在Python中使用urllib。如果是这样,只需使用赛普拉斯,它就可以节省您的时间。

答案 1 :(得分:0)

您可以使用无头铬来获取元素。这将加快获取元素的过程。

https://developers.google.com/web/updates/2017/04/headless-chrome

其他选项是使用scrapy抓取网页以获取处理信息所需的信息。