问题标签 [go-colly]

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.

0 投票
1 回答
812 浏览

go - gocolly:如何防止重复抓取,限制为唯一的 url 抓取一次

我正在用下面的代码试验 go-colly,它似乎多次爬取相同的 url,我如何限制一次爬取?

我怀疑 'Parallellsim:2' 导致了重复,但是,一些爬网消息 url 每个重复超过 10 次。

可在不同网站上重现。

gocolly 又瘦又好。

在此处输入图像描述

0 投票
1 回答
216 浏览

go - 如何将 go-colly 连接到 elasticsearch?

我在下面的代码中使用 go-colly 对弹性索引进行了哪些更改?

  1. 我想获取全文(剥离 html,剥离 js,如果需要,渲染),然后

  2. 使其符合 avro 模式 {pageurl: , title:, content:},

  3. 批量发布到特定的弹性搜索“mywebsiteindex-yyyymmdd” - 可能使用配置文件,而不是硬编码。

代码片段会很棒。是否有一个示例 go-colly 代码显示“流水线”输出 crawl->scraping->yield to elastic(例如在 python scrapy 框架中)。即流水线 框架支持。

为了插入弹性,我正在考虑:https://github.com/olivere/elastic

0 投票
2 回答
1958 浏览

go - go-colly:如何在 c.OnResponse 中获取 HTML 标题,以便填充结构?

如何在 c.OnResponse 中获取 HTML.title - 或者是否有更好的替代方法来用 url/title/content 填充 Struct

  • 最后,我需要填写以下结构并将其发布到 elasticsearch。

我可以通过如下方法获得标题,但是 Ctx 不可用,因此我无法将“标题”值放入 Ctx。其他选择?

日志

0 投票
1 回答
977 浏览

sqlite - Golang 并发 R/W 到数据库

我正在编写一些 Go 软件,负责下载和解析大量 JSON 文件并将解析后的数据写入 sqlite 数据库。我目前的设计有 10 个 go 例程,同时下载/解析这些 JSON 并将它们传送到另一个 go 例程,该例程的唯一工作是监听特定频道并将频道内容写入数据库。

系统会在所有写入完成后执行一些额外的读取操作,这会导致查询返回错误结果的问题,因为并非所有数据都已写入表。因为我提取的 JSON 数据是动态的,所以我没有简单的方法知道所有数据何时都已写入。

我考虑了两种解决方案的可能性,尽管我对这两种解决方案都不太满意:

  1. 在频道上收听并等待它为空。这原则上应该有效,但是,它不能确保数据已被写入,它只确保它已在通道上接收到。
  2. 同步对数据库的访问。这在原则上应该再次起作用,但是,我仍然需要将查询操作放在所有写操作之后。

我是否应该考虑其他任何设计决策来纠正这个问题?作为参考,我用来提取这些数据的库是 go-colly 和 go-sqlite3。感谢所有的帮助!

0 投票
1 回答
335 浏览

selenium - 如何使用 gocolly twocaptcha 和 selenium 绕过重新验证码

在多次请求后,我的抓取代码被目标站点用重新验证码阻止了。我使用https://github.com/gocolly/twocaptcha通过 selenium chrome 驱动程序绕过验证码。它在绕过 selenium chrome 驱动程序时工作,但是当我再次运行我的抓取代码时它仍然被阻塞。

我的问题 :

  1. 为什么当 re-captcha 已经被 selenium chrome 驱动程序绕过时,我的代码仍然被阻塞?
  2. 如何绕过这个重新验证码块?
0 投票
1 回答
397 浏览

web-scraping - colly如何启用Js

我有很多使用Scrapy的经验,但是或者在这个项目中我应该使用colly的一些原因。我正在尝试从网站上抓取数据,但它返回要重新获得访问权限,请确保在重新加载页面之前启用 cookie 和 JavaScript。

我的代码部分如下:

我在文档“自动 cookie 和会话处理”中看到,所以可能是 js 的问题,我该如何克服这个问题?首先,尝试一下如何在 colly 中启用 js?

0 投票
1 回答
527 浏览

go - 如何正确使用选择器

我正在编写一个爬虫来从某些页面中检索一些数据,如何构建它的逻辑对我来说非常清楚,但我对如何正确使用选择器感到非常困惑。

我想使用 colly 获取一些新闻的标题,我转到页面https://g1.globo.com/economia并检查了我要提取信息的标题 -> 单击检查 -> 复制选择器。

选择器是

正文 > div.glb-grid > main > div.row.content-head.non-featured > div.title > h1

我怎样才能把它正确地放在这行代码中?

如何以 colly 可以理解的方式解析这个选择器的正确方法?我在 colly 文档中找不到与此相关的任何内容。

0 投票
0 回答
96 浏览

go - 无法从下拉列表中选择一个选项以使用 gocolly\colly 进行网络抓取

我想使用 Golang gocolly/colly从以下公共网站上抓取数据-

https://eds.ospi.k12.wa.us/BusDepreciation/default.aspx?pageName=busSearch

对于上面的网站,我想一一选择下拉菜单中所有可用的“学区”选项,并抓取所有数据。到目前为止,我只能抓取页面的 HTML,但我无法找到任何方法来选择下拉选项以获取不同选项的数据。

在此处输入图像描述

我的围棋代码

如果有人可以向我推荐相关文件,我将不胜感激。此外,如果gocolly/colly无法使用,请向我建议使用 Golang 或 Python 的另一个选项来选择下拉选项。

我还想知道我们是否应该像在我们的场景中那样使用 Selenium 来抓取大数据作为替代方法?如果是的话,我们如何在 Golang 或 Python 中做到这一点?还是我们应该使用scrapy

0 投票
1 回答
299 浏览

go - 只刮一定的
使用 gocolly

我正在尝试使用 gocolly 制作网络爬虫。我只想抓取<div>id 为dailyTexton的元素https://wol.jw.org/en/wol/h/r1/lp-e。我怎样才能做到这一点?

0 投票
1 回答
120 浏览

go - 如何让 gocolly 爬行变慢

我正在使用 gocolly 从我的网站收集数据,挑战在于,在抓取 URL 时,gocolly 过于激进。我添加了一个 RandomDelay

更新

根据我改变的答案

但是当它爬行时,它会在几秒钟内完成:

原始输出

更新后的输出

我正在寻找的是一种确保gocolly 不会比例如5-10 秒公关页面更快地抓取这些页面的方法。原因是,我不想在每次 gocolly 运行时看到我的网站上的性能飙升。

添加 time.Sleep 可能是一种选择,但如果可能的话,我宁愿使用 gocolly Limit() 。