python的selenium替代方案?访问web元素的最快方式

python的selenium替代方案?访问web元素的最快方式,python,brute-force,Python,Brute Force,我正试图创造一个蛮力。在我当前的版本中,我只是使用selenium,并以这种方式查找web元素。这看起来很慢,可能是因为它加载了整个网站。(只是一个本地托管的面板)。有谁知道一个更好的方法来实现这一点,也许不用制作自动浏览器?对于任何想知道的人来说,我正试图找到2个元素,并且没有api等,所以我假设我不能通过python中的请求库来完成这项工作。您可以使用headless chrome来获取元素。这将加快获取元素的过程 另一种选择是使用scrapy对网页进行抓取,以获取处理信息所需的信息 Be

我正试图创造一个蛮力。在我当前的版本中,我只是使用selenium,并以这种方式查找web元素。这看起来很慢,可能是因为它加载了整个网站。(只是一个本地托管的面板)。有谁知道一个更好的方法来实现这一点,也许不用制作自动浏览器?对于任何想知道的人来说,我正试图找到2个元素,并且没有api等,所以我假设我不能通过python中的请求库来完成这项工作。

您可以使用headless chrome来获取元素。这将加快获取元素的过程


另一种选择是使用scrapy对网页进行抓取,以获取处理信息所需的信息

BeautifulSoup
是Python中解析网页的事实上的标准库。这是伟大的服务器渲染或静态内容。它在阻止web抓取、使用客户端呈现动态更新或需要cookie或身份验证的网站上崩溃

那么,如果
BeautifulSoup
不能解决这个问题,你会用什么呢

退房。它是Javascript本机语言,但它在Python、Node、Ruby、php和.NET中都有应用

即使没有适配器,Cypress也是e2e测试和浏览器自动化的强大工具,它消除了Selenium带来的所有痛苦。如果您试图获取的信息需要身份验证、cookie、交互,或者受到反机器人代码的阻碍,请尝试一下

如果您已经知道如何使用浏览器的开发工具检查请求,您可以停止阅读此处。否则


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

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

然后:


浏览每个api调用的response选项卡,查看感兴趣的数据是否隐藏在显而易见的地方。如果您想要的数据在那里,请检查“请求”选项卡,查看浏览器是否需要查看您必须发送的请求参数才能获取数据。如果这是一个简单的GET请求,那么很可能你可以直接将url复制到你的浏览器中,它就是你想要的数据。如果它是一个帖子,你可以用Servistate或Postman这样的工具进行实验,看看到底是什么吸引了你。我会像在浏览器中一样复制请求,然后在POST正文和其他参数中拉出或交换内容,看看它是如何工作的,我能做些什么。如果不需要cookie,可以使用Python中的
urllib
。如果是这样,只需使用Cypress即可节省时间。

只要您感兴趣的内容包含在不动态加载的web元素中,那么
BeautifulSoup
就是一个很好的资源。只需使用
requests
库请求源HTML,然后将其传递给
BeautifulSoup
以搜索您感兴趣的元素。除了rahlf23提到的内容(这对于静态内容与urllib结合非常有用)之外,您还可以查看PyQt4/5。PyQt比selenium稍微麻烦一点,但速度明显更快,在某些方面做得更好。您可以通过快速谷歌搜索找到基本的抓取脚本的教程。硒是问题所在,而不是broswer。在headless more中运行chrome不会显著提高效率。同样,scrapy是一个web爬行框架,对于OP的需求来说太多了,最终会变得更糟。他只需要一个更好的html解析器。前面提到的问题是加载页面。让它无头将加快这一进程。但是你是对的,也许向浏览器发送HTTP请求并解析html响应可以解决错误,除非有任何ajax调用填充元素。不过,无头浏览器仍然呈现内容。它只是没有一个供用户使用的图形界面。chrome与无头chrome的渲染引擎是相同的。为了详细说明您所说的第二部分,只要没有javascript/ajax/jquery/等,他就可以简单地使用
请求
urllib
,甚至
机械化
从页面获取html响应,并使用html解析器(如
beautifulsoup
)对其进行解析,这将是难以置信的快。+1解释如何寻找XHR。我在其他帖子中看到一些人提到了它,但没有解释如何实际使用devtools来查找它。感谢您的帮助,特别是解释xhr,我非常感谢!