问题标签 [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.
go - 如何将 go-colly 连接到 elasticsearch?
我在下面的代码中使用 go-colly 对弹性索引进行了哪些更改?
我想获取全文(剥离 html,剥离 js,如果需要,渲染),然后
使其符合 avro 模式 {pageurl: , title:, content:},
批量发布到特定的弹性搜索“mywebsiteindex-yyyymmdd” - 可能使用配置文件,而不是硬编码。
代码片段会很棒。是否有一个示例 go-colly 代码显示“流水线”输出 crawl->scraping->yield to elastic(例如在 python scrapy 框架中)。即流水线 框架支持。
为了插入弹性,我正在考虑:https://github.com/olivere/elastic?
go - go-colly:如何在 c.OnResponse 中获取 HTML 标题,以便填充结构?
如何在 c.OnResponse 中获取 HTML.title - 或者是否有更好的替代方法来用 url/title/content 填充 Struct
- 最后,我需要填写以下结构并将其发布到 elasticsearch。
我可以通过如下方法获得标题,但是 Ctx 不可用,因此我无法将“标题”值放入 Ctx。其他选择?
日志
sqlite - Golang 并发 R/W 到数据库
我正在编写一些 Go 软件,负责下载和解析大量 JSON 文件并将解析后的数据写入 sqlite 数据库。我目前的设计有 10 个 go 例程,同时下载/解析这些 JSON 并将它们传送到另一个 go 例程,该例程的唯一工作是监听特定频道并将频道内容写入数据库。
系统会在所有写入完成后执行一些额外的读取操作,这会导致查询返回错误结果的问题,因为并非所有数据都已写入表。因为我提取的 JSON 数据是动态的,所以我没有简单的方法知道所有数据何时都已写入。
我考虑了两种解决方案的可能性,尽管我对这两种解决方案都不太满意:
- 在频道上收听并等待它为空。这原则上应该有效,但是,它不能确保数据已被写入,它只确保它已在通道上接收到。
- 同步对数据库的访问。这在原则上应该再次起作用,但是,我仍然需要将查询操作放在所有写操作之后。
我是否应该考虑其他任何设计决策来纠正这个问题?作为参考,我用来提取这些数据的库是 go-colly 和 go-sqlite3。感谢所有的帮助!
selenium - 如何使用 gocolly twocaptcha 和 selenium 绕过重新验证码
在多次请求后,我的抓取代码被目标站点用重新验证码阻止了。我使用https://github.com/gocolly/twocaptcha通过 selenium chrome 驱动程序绕过验证码。它在绕过 selenium chrome 驱动程序时工作,但是当我再次运行我的抓取代码时它仍然被阻塞。
我的问题 :
- 为什么当 re-captcha 已经被 selenium chrome 驱动程序绕过时,我的代码仍然被阻塞?
- 如何绕过这个重新验证码块?
go - 如何正确使用选择器
我正在编写一个爬虫来从某些页面中检索一些数据,如何构建它的逻辑对我来说非常清楚,但我对如何正确使用选择器感到非常困惑。
我想使用 colly 获取一些新闻的标题,我转到页面https://g1.globo.com/economia并检查了我要提取信息的标题 -> 单击检查 -> 复制选择器。
选择器是
正文 > div.glb-grid > main > div.row.content-head.non-featured > div.title > h1
我怎样才能把它正确地放在这行代码中?
如何以 colly 可以理解的方式解析这个选择器的正确方法?我在 colly 文档中找不到与此相关的任何内容。
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?
go - 只刮一定的使用 gocolly
我正在尝试使用 gocolly 制作网络爬虫。我只想抓取<div>
id 为dailyText
on的元素https://wol.jw.org/en/wol/h/r1/lp-e
。我怎样才能做到这一点?
go - 如何让 gocolly 爬行变慢
我正在使用 gocolly 从我的网站收集数据,挑战在于,在抓取 URL 时,gocolly 过于激进。我添加了一个 RandomDelay
更新
根据我改变的答案
至
但是当它爬行时,它会在几秒钟内完成:
原始输出
更新后的输出
我正在寻找的是一种确保gocolly 不会比例如5-10 秒公关页面更快地抓取这些页面的方法。原因是,我不想在每次 gocolly 运行时看到我的网站上的性能飙升。
添加 time.Sleep 可能是一种选择,但如果可能的话,我宁愿使用 gocolly Limit() 。