问题标签 [apify]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Apify 网络爬虫任务不稳定。在相隔几分钟的运行之间获得不同的结果
我正在构建一个非常简单的刮板,以从我也喜欢收听的在线广播电台获取“正在播放”的信息。
它存储在他们网站上的一个简单的 p 元素中: data html location
现在使用标准的 apify/web-scraper 我遇到了一个奇怪的问题。抓取有时有效,但有时不使用此代码:
如果刮板有效,我会得到以下结果:
[{"nowPlaying": "Hangover Hotline - hosted by Lamebrane"}]
但如果不是我得到这个:
[{"nowPlaying": ""}]
并且两次刮擦之间只有5分钟的差异。网站不会改变,数据总是以相同的方式呈现。我尝试检查所有框以规避安全性和不同的选项组合(使用 Chrome、使用隐身、忽略 SSL 错误、忽略 CORS 和 CSP),但不幸的是,这似乎并没有解决它。 刮痧不稳定
关于如何让这个抓取任务不断返回我需要的数据的任何建议?
puppeteer - 如何用 Apify 序列化 iframe 的表单数据
好的,所以我尝试序列化表单数据,但我得到未定义这是代码:
puppeteer - 如何将 json 对象传递给 $eval 函数
我正在尝试将 json 传递给函数但没有成功这是我到目前为止所尝试的
或者像这样
或者像这样
请指教正确的方法
javascript - 如何增加 Apify 中函数的默认超时时间
我目前正在使用Apify的网络刮板
演员,
我正在尝试刮掉一个加载时间很长的页面。我已经遇到过这种情况,并且使用下面的代码总是有效的。
但是这次页面加载速度确实很慢,并且达到了[await context.waitFor(...)]
20 秒的功能超时。有没有办法将此持续时间增加到默认值以上?
apify - 内存计数的差异以及计算单元的计数
我开发了一个actor并以1024MB的内存限制运行它。当我运行它时,日志中出现了严重的内存过载警告,实际内存值(> 900MB)接近限制。到目前为止,一切都很好。当我检查运行的“最大”内存信息选项卡时,它显示的值要小得多(534.4MB),这不符合上述值(附件 2)。
两个值有什么区别?哪一个算作计算单元?
puppeteer - 如何使用 Apify 登录网站并点击按钮?
我需要使用Apify和Zapier来自动化 i)登录到受密码保护的网页和 ii)单击按钮。我怎样才能做到这一点?
我想我应该在 Actor 中使用 Puppeteer,但我不确定如何。
目标 URL 会不时更改。它们的格式是https://studio.example.com/products/videocloud/media/videos/{id_code}
where {id_code}
is,例如6091481925001
.
1.扎皮尔
Zapier 应该调用 Apify Actor 来完成这项工作。现有 zap 中的操作已经可以访问动态{id_code}
. 一个额外的动作应该“运行 Actor”给 Apify,将一个{id_code}
或完整的 URL传递https://studio.example.com/products/videocloud/media/videos/6091481925001
给 Apify 以在其上运行。
如何通过“输入正文”正确地将值传递给 Apify?
2. 登录
在未经身份验证的情况下访问时,页面将重定向到登录表单https://signin.example.com/?redirect=https%3A%2F%2Fstudio.example.com%2Fproducts%2Fvideocloud%2Fmedia%2Fvideos%2F6091481925001
:
- “电子邮件地址”(
input
带有id="email"
和name="email"
) - “密码”(
input
带id="password"
和name="password"
) - “登录”按钮(
button
带有id="signinButton"
和type="submit"
)
如何在此处使用 Actor 登录?
3. 点击
一旦通过身份验证,就会出现目标页面。它有一个按钮栏,包括“激活”按钮(如果我们被允许单击它button
,其子span
文本只能是“激活”)。
(有关信息 - 单击后,按钮文本应变为“停用”)。
如何让 Apify 在此处单击“激活”按钮?
据我了解,这不是抓取工作,因为我不希望从网页返回数据,所以我不应该使用apify/puppeteer-scraper或apify/web-scraper。
更新:
到目前为止,我有以下内容。但是,Apify 中的 Puppeteer 超时 - 相当长的值高达 9000 毫秒,这表明它不一定是页面加载问题(?)
web-scraping - 如何使用 Puppeteer 添加输入
我一直收到找不到节点的错误。我转而尝试使用 jQuery。没运气。我现在就在这。page.text 不起作用。我得到了节点错误。我正在尝试通过提供案例编号来抓取https://web6.seattle.gov/courts/ECFPortal/Default.aspx以获取案例信息和文件。
apify - PuppeteerCrawler 和 Task 的 Settigs 差异
我已经将爬虫迁移到带有 legacy-phantomjs-crawler (Task-Version) 的 Task 中,并且出于效率和更好设计的原因,使用 PuppeterCrawler (Act-Version) 将其重新开发为纯 Act。比较两个版本,结果发现 Task-Verion 比 Act-Verion 快两倍。我怀疑这与设置差异有关,尤其是根据导航超时。但我不确定。
为什么刮板作为一个任务比作为一个动作更快,或多或少相同的逻辑?带有 PuppeterCrawler 的 Act 和带有 legacy-phantomjs-crawler 的 Task 之间的设置差异是什么?如何使用 PuppeterCrawler 设置 Act,以便获得与使用 legacy-phantomjs-crawler 的任务相同的性能?
干杯沃尔夫冈
javascript - 我需要将两个日期分成不同的值
当我使用 Apify 抓取网站时,我需要一些 JavaScript 将这样显示的两个日期08 Oct - 12 Oct 2019
分隔为单独的值。10/08/2019
10/12/2019
我已经开始使用 Apify 从当地剧院网站上抓取一些事件数据,这样我就可以自己提供相同的信息。剧院公司将开始和结束日期写在一个段落标签中,这意味着它在一个单元格中返回两个日期。
为了让我的网站使用剧院公司的日期数据,我需要像这样格式化每个日期,mm/dd/yyyy
并且需要将每个日期分成它们自己的值。javascript有没有办法将提供的示例中的日期分开并将它们格式化为美国日期形式?
例如,这是我从https://theatreroyal.com/whats-on/the-rocky-horror-show/抓取数据的页面之一
目前,上面的脚本返回写入的日期,即10 October - 12 Oct 2019
无法满足我的需要。
我真的很感激一些帮助。提前致谢!
apify - Apify.utils.puppeteer 对象中缺少方法
如果我“要求”Apify 并使用 Chrome 调试器检查 Apify.utils.puppeteer 的方法,则缺少一些记录在案的方法。请与截图比较:
gotoExtended()
addInterceptRequestHandler()
removeInterceptRequestHandler()
infiniteScroll()
这些方法哪里去了?
干杯沃尔夫冈