- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在c.OnResponse中获取HTML.title-还是有更好的替代方法用url / title / content填充Struct
type WebPage struct {
Url string `json:"url"`
Title string `json:"title"`
Content string `json:"content"`
}
// Print the response
c.OnResponse(func(r *colly.Response) {
pageCount++
log.Println(r.Headers)
webpage := WebPage{
Url: r.Ctx.Get("url"), //- can be put in ctx c.OnRequest, and r.Ctx.Get("url")
Title: "my title", //string(r.title), // Where to get this?
Content: string(r.Body), //string(r.Body) - can be done in c.OnResponse
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
enc.Encode(webpage) // SEND it to elasticsearch
log.Println(fmt.Sprintf("%d DONE Visiting : %s", pageCount, urlVisited))
})
c.OnHTML("title", func(e *colly.HTMLElement) {
fmt.Println(e.Text)
e.Ctx.Put("title", e.Text) // NOT ACCESSIBLE!
})
2020/05/07 17:42:37 7 DONE Visiting : https://www.coursera.org/learn/build-portfolio-website-html-css
{
"url": "https://www.coursera.org/learn/build-portfolio-website-html-css",
"title": "my page title",
"content": "page html body bla "
}
2020/05/07 17:42:37 8 DONE Visiting : https://www.coursera.org/learn/build-portfolio-website-html-css
{
"url": "https://www.coursera.org/browse/social-sciences",
"title": "my page title",
"content": "page html body bla "
}
最佳答案
我创建了该结构的全局变量,并用不同的方法填充它
不知道这是否是最好的方法。
fun main(){
....
webpage := WebPage{} //Is this a right way to declare a mutable struct?
c.OnRequest(func(r *colly.Request) { // url
webpage.Url = r.URL.String() // Is this the right way to mutate?
})
c.OnResponse(func(r *colly.Response) { //get body
pageCount++
log.Println(fmt.Sprintf("%d DONE Visiting : %s", pageCount, webpage.Url))
})
c.OnHTML("head title", func(e *colly.HTMLElement) { // Title
webpage.Title = e.Text
})
c.OnHTML("html body", func(e *colly.HTMLElement) { // Body / content
webpage.Content = e.Text // Can url title body be misrepresented in multithread scenario?
})
c.OnHTML("a[href]", func(e *colly.HTMLElement) { // href , callback
link := e.Attr("href")
e.Request.Visit(link)
})
c.OnError(func(r *colly.Response, err error) { // Set error handler
log.Println("Request URL:", r.Request.URL, "failed with response:", r, "\nError:", err)
})
c.OnScraped(func(r *colly.Response) { // DONE
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
enc.Encode(webpage)
})
关于go - go-colly:如何在c.OnResponse中获取HTML标题,以便填充结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61668117/
我正在尝试制作一个简单的网络抓取工具,但我似乎无法从 colly 获得最简单的功能。我从 colly 文档中获取了基本示例,虽然它适用于他们使用的 hackernews.org 网站,但不适用于我试图
我之前以基本相同的方式(只是不同的域)完成了几个类似的程序,但是这次,colly 没有找到一个链接,而是在访问第一页后退出。谁能看出哪里出了问题?*注意:为了清楚地说明手头的主题,我省略了程序的某些部
我从 Go 开始,并从 Colly 开始。有人可以帮我从输出中删除空行吗?这是我的代码: package main import ( "fmt" "github.com/gocolly
我正在用 colly 包制作一个网络抓取工具,它从网站收集 ContestName 和 ContestTime 并制作一个 json 文件。 所以我喜欢这个 Contests := make(
如何在c.OnResponse中获取HTML.title-还是有更好的替代方法用url / title / content填充Struct 最后,我需要填充以下结构并将其发布到elasticsearc
我正在使用 colly 框架来抓取网站。我正在尝试登录 Evernote 帐户以抓取一些东西。但我无法通过它。我使用“用户名”和“密码”标题来提供凭据。这是正确的方法吗? 提前谢谢你。 package
我是 Go 的新手,我正在将它与 Colly 一起使用抓取一个网站,但我在使用 noscript 标签时遇到了一些问题,因为它没有被解析,只是作为一个字符串返回,所以我想将该字符串转换为一个 coll
FTR 我已经在这两个框架中成功地编写了很多爬虫,但我被难住了。这是我试图抓取的数据的屏幕截图(您也可以转到获取请求中的实际链接): 我尝试定位 div.section_content: import
我正在使用 colly用于抓取网站。在 OnHTML 回调中: package main import ( "fmt" "github.com/gocolly/colly" ) fun
我是一名优秀的程序员,十分优秀!