问题标签 [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 网络爬虫范围限制为前三个列表页面?
我在Apify (jQuery) 中编写了以下网络爬虫,但我正在努力将其限制为仅查看某些列表页面。
爬虫会抓取我在https://www.beet.tv/author/randrews上发表的文章,该页面包含 102 个分页索引页面,每个页面包含 20 个文章链接。爬虫在手动和完全执行时工作正常;它得到了一切,2,000 多篇文章。
但是,我希望使用Apify 的调度程序来触发偶尔的抓取,该抓取仅从这些索引 (LIST) 页面的前三个(即 60 篇文章)中抓取文章。
调度程序使用 cron 并允许通过输入 Json 传递设置。按照建议,我正在使用“customData”...
...然后下面取该值并用它来限制...
这应该允许脚本在通过调度程序执行时限制范围,但在手动执行时正常进行并完整获取所有内容。
然而,虽然调度器成功地触发了爬虫——爬虫仍然会再次运行整个集合;它不会在 /page/3 处结束。
如何确保我只获得前三页到 /page/3?
我有什么畸形吗?
在代码中,您可以看到我之前添加的上述版本,现在已被注释掉。
那些 LIST 页面应该只是......
- STARTing 一个,带有隐含的“/page/1” URL ( https://www.beet.tv/author/randrews )
- https://www.beet.tv/author/randrews/page/2
- https://www.beet.tv/author/randrews/page/3
... 而不是 /page/101 或 /page/102 之类的,它们可能会浮出水面。
以下是关键术语...
这是爬虫脚本...
cookies - Apify:在 RequestQueue 中保留标头
我正在尝试使用 PuppeteerCrawler 抓取我们本地的 Confluence 安装。我的策略是先登录,然后提取会话 cookie 并在起始 url 的标题中使用它们。代码如下:
首先,我“步行”登录以提取相关凭据:
然后我使用准备好的请求标头构建爬虫结构:
足部登录和 cookie 提取似乎没问题(“卷曲”请求完美运行),但 Confluence 不接受通过 puppeteer / headless chromium 登录。似乎标题以某种方式丢失了..
我究竟做错了什么?
javascript - Puppeteer $.eval 选择嵌套元素
可以说我给出了像这个页面这样的情况
可以说我需要得到“YourCountry”我如何真正得到这个元素?
到目前为止,我尝试过:
不知道该怎么做,尝试只返回 tr 然后再次评估 tr[1] 不起作用,因为它说 tr 没有函数 .$$eval。
请注意,我正在使用 apify 来获取页面。
javascript - 使用 Apify 抓取多个页面
是否可以使用带有伪 URL 的 Apify 抓取多个页面?
当人们问同样的问题时,大多数答案都指向伪 URL,如果可能/不可能这样做,并没有真正直接解决问题。
如果我在运行爬虫时不知道伪 URL,并且我从一个页面中抓取了 10 个链接——那么我想抓取这 10 个链接,该怎么做呢?
https://kb.apify.com/tutorial-creating-your-first-crawler/crawling-multiple-pages
javascript - Apify crawler with more than 2 clickable element
I am trying to create an apify crawler, which has multiple clickable element. First click is to paginate, second click to visit each result, third is to visit a section of each result to extract more information.
The first 2 clicks are happening, it paginates and visits the results and extract first 3 values : item_name, categories and email
The fourth value : kvk is not returned. I think either the third click is not happening or the code I used have some errors. Can anyone please help me to fix this?
apify - 将 cookie 从 Actor 传递给 Crawler
我用我想要抓取的 URL 设置了一个爬虫,演员正在工作,我用 cookie/屏幕截图示例进行了测试。我只是在将 cookie 从演员传递到爬网时遇到问题:
我认为cookie没有通过,因为Crawler没有登录。
puppeteer - 在 pupeeter/apify 中获取页面元素的一个属性
我可以在 pupeeter 中获取 html 元素的textContent :
然而,有时textContent还不够,请参阅以下 html:
结果是模糊的:“ https://www.4-b.ch/de/4b-fenster-fassad ... ” 最后带有...。
所以,我最好得到href属性。
但当:
结果是TypeError: website_element.getAttribute is not a function
有什么建议吗?
javascript - Apify 网络爬虫忽略 URL 片段
我有一个我想抓取的 URL 列表,所以我把它放在startUrls
这样的位置
pageFunction
这是我的代码的摘录。
它适用于可以通过域或路径区分的 URL。但是,如果唯一的区别在于片段,则只处理第一个 URL,因为第二个 URL 被认为是重复的,因此被跳过。
我试过在第二行添加这段代码pageFunction
但它会导致另一个问题,即它会为每个 URL 生成重复的结果。
那么我应该怎么做才能使它正常工作呢?除了调用enqueueRequest
设置keepUrlFragment
to之外,还有其他方法true
吗?
javascript - 如何使用 jquery ajax 将多个 HTML 页面下载到带有 apify 的 Dropbox
我正在使用 Apify 抓取大约一百页,我希望将我访问的所有页面的 HTML 文件下载到一个 Dropbox 文件夹中。如何在我的 jQuery Ajax 代码中指定它?
提前抱歉,我对 Javascript 和所有与网络相关的东西都很陌生。
我已经尝试遵循这些教程:https ://forum.apify.com/t/data-download-from-within-crawler/48和https://www.dropbox.com/developers/documentation/http/ documentation#files-save_url但是,我只能下载我访问的第二页的 HTML 文件。我知道我的爬虫工作得很好并且可以访问它需要的所有站点,因为我从这些页面中获得了我需要的结果,所以问题似乎是我没有指定我要下载所有 HTML 文件。我该怎么做呢?
(在我的实际代码中,我用正确的 Oath-token 编写,我只是不希望它在网上供所有人看到)
我从中得到的是在我的 Dropbox 中保存为 a.txt 的一个文件,这正是我想要的,只是这个文件只包含一个 HTML 文件,而不是一个包含我的爬虫访问过的所有文件的文件。
这段代码是我的爬虫为它访问的每个新页面遇到的第一件事。
javascript - 如何在 Google Cloud Functions 上使用 Apify
我正在使用 Apify 作为 Google Cloud Functions 部署一些代码。触发后,云函数会静默终止。我究竟做错了什么?
我有一些使用 Apify 0.15.1 的工作代码。它在本地运行良好。一旦部署为谷歌云功能,它会静默失败,没有任何明显的错误。使用 Puppeteer 1.18.1 的等效代码可以正常工作。
我已经使用下面更简单的代码重现了这个问题。虽然此示例并不严格要求 Apify,但我希望能够使用 Apify 提供的额外功能。
使用 Apify 的代码:
使用 Puppeteer 的代码:
一旦部署为 Google Cloud 函数(使用 --trigger-http 和 --memory=2048),Puppeteer 变体就可以正常工作,而 Apify 变体会静默终止而没有结果(除了“ok”/HTTP 200 返回值)。