当前位置: 首页 > 知识库问答 >
问题:

Scrapy-动态等待页面加载-selenium+Scrapy

仲皓君
2023-03-14

我最近用python和Selenium做了一个webscraper,我发现做起来非常简单。页面使用ajax调用加载数据,最初我等待一个固定的time_out加载页面。有一段时间奏效了。之后,我发现selenium有一个内置函数WebDriverWait,它可以使用wait.until()等待特定元素的加载。这使我的webscraper运行得更快。

问题是,我对结果还是不满意。我下载内容平均每页花了1.35秒。

1)scrapy是否自动并行运行多个url请求?

2)如何使用scrapy设置动态超时,比如Selenium的WebDriverWait wait.until()

3)如果scrapy没有可用的动态设定时间,并且解决方案是使用scrapy+selenium,让selenium等待内容加载,那么使用scrapy真的有什么好处吗?我可以使用selenium选择器简单地检索数据,就像我在使用scrapy之前所做的那样

谢谢你的帮助。

共有1个答案

阴靖
2023-03-14
  1. 是的,Scrapy可以并发处理多个请求,这些请求是异步调度和处理的。这意味着Scrapy不需要等待一个请求完成和处理,它可以发送另一个请求或在此期间做其他事情。简而言之,它的速度极快,并且可以按照您的要求进行配置。
 类似资料:
  • 问题内容: 我编写了一个脚本,该脚本从页面中获取数据,但是有时页面需要花费一些时间来加载,因此当将html拉到汤对象中时,有时它什么也不会拉,因为页面仍然需要完成。 我编写了以下代码以等待页面完成。 有用 但是调用函数时出现以下错误; 问题答案: 我认为您应该这样使用: 如手册所述。

  • 问题内容: 使用Selenium2Driver将Behat与Mink结合使用时,是否有办法可靠地等待页面加载? 我继承了一些旧的测试,像这样等待: 即仅此一次测试就需要1分钟30秒。 我想做的是有一种通用的方式来等待上一次单击以导致页面加载,而不必每次都等待大量固定的时间。 我可以看到等待页面加载的所有建议,都涉及检查是否已加载特定页面元素。 但是,这些测试是针对各种传统网站运行的,这些网站中并不

  • Selenium的SafariDriver似乎不会等待网页加载。我的测试如下: 如果您使用或运行此功能,它将正常运行,即搜索“您好世界”,然后在结果页面上转到图像结果。 使用,它会失败: 找不到的元素是“Images”,因为页面在运行该语句之前没有加载。 这是预期行为吗?我应该是狩猎旅行的特例吗?

  • 问题内容: 您如何使Selenium 2.0等待页面加载? 问题答案: 您还可以使用以下代码检查页面加载

  • 问题内容: 我想抓取无限滚动实现的页面的所有数据。以下python代码有效。 这意味着每次我向下滚动到底部时,我需要等待5秒钟,这通常足以使页面完成加载新生成的内容。但是,这可能不是省时的。该页面可能会在5秒内完成新内容的加载。每次向下滚动时,如何检测页面是否完成了新内容的加载?如果可以检测到此情况,则在知道页面加载完成后,可以再次向下滚动以查看更多内容。这样更省时。 问题答案: 该会通过等待页面

  • 问题内容: 您如何使Selenium 2.0等待页面加载? 问题答案: 你可以期望显示一些元素。类似于C#: