首页 > 其他分享 >基于Go 1.19的站点模板爬虫

基于Go 1.19的站点模板爬虫

时间:2024-07-08 12:30:54浏览次数:17  
标签:err nil doc resp 爬虫 1.19 goquery Go

创建一个基于Go 1.19的站点模板爬虫涉及到几个关键步骤:初始化项目,安装必要的包,编写爬虫逻辑,以及处理和存储抓取的数据。下面是一个简单的示例,使用goquery库来解析HTML,并使用net/http来发起HTTP请求。请注意,实际部署爬虫时,需要遵守目标网站的robots.txt规则和版权政策。

首先,确保你的Go环境已经更新到了1.19版本。可以通过运行go version来检查。

接下来,创建一个新的Go模块:

mkdir site_crawler
cd site_crawler
go mod init site_crawler

安装goquery库:

go get github.com/PuerkitoBio/goquery

现在,我们可以开始编写爬虫代码了。以下是一个基本的爬虫示例,用于抓取网页上的标题:

package main

import (
	"fmt"
	"log"
	"net/http"

	"github.com/PuerkitoBio/goquery"
)

func fetchURL(url string) (*goquery.Document, error) {
	resp, err := http.Get(url)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()

	if resp.StatusCode != 200 {
		return nil, fmt.Errorf("status code error: %d %s", resp.StatusCode, resp.Status)
	}

	doc, err := goquery.NewDocumentFromReader(resp.Body)
	if err != nil {
		return nil, err
	}

	return doc, nil
}

func scrapeTitles(doc *goquery.Document) {
	doc.Find("h1").Each(func(i int, s *goquery.Selection) {
		title := s.Text()
		fmt.Println(title)
	})
}

func main() {
	url := "http://example.com" // 替换为你想要爬取的网站URL

	doc, err := fetchURL(url)
	if err != nil {
		log.Fatal(err)
	}

	scrapeTitles(doc)
}

在这个示例中,我们定义了两个主要功能:

  1. fetchURL:该函数从给定的URL获取页面内容,并使用goquery将其解析为文档对象。
  2. scrapeTitles:此函数遍历文档中所有的<h1>标签,并打印出它们的文本内容。

你可以根据需要修改scrapeTitles函数,以提取不同的HTML元素或属性。例如,如果你想抓取所有链接,可以使用a标签;如果想抓取图片,可以使用img标签,并提取src属性。

最后,记得在实际使用爬虫时,尊重目标网站的爬虫政策,不要对服务器造成过大的负担,同时处理好抓取数据的存储和使用,确保符合法律法规和道德规范。

标签:err,nil,doc,resp,爬虫,1.19,goquery,Go
From: https://blog.csdn.net/m0_52011717/article/details/140265265

相关文章

  • django相关问题
    django相关问题orm相关问题1.编写orm在数据库中添加字段,遇到以下内容(.venv)E:\document\py_object\fun_object\wuruntao>pythonmanage.pymakemigrationsItisimpossibletoaddanon-nullablefield'phone'touserwithoutspecifyingadefault.Thisisbecauseth......
  • go return 的时候传递参数给defer
    在Go语言中,defer语句用于延迟执行一个函数直到包含它的函数体执行完毕。在使用defer时,函数的参数会在defer语句执行时被计算,并且函数调用会被延迟执行。如果你希望在函数返回时调用defer语句,并且想要传递一些参数给defer延迟调用的函数,你可以通过将这些参数先保存在变量中,然后在d......
  • 手把手教学!金融行业Google UAC 3.0 广告到底该怎么投?
    浅谈GoogleUAC通用应用广告系列(即UniversalAppCampaigns,简称UAC)是Google于2015年推出的一种旨在为移动应用(MobileApp)寻找更多新用户的广告形式。UAC可覆盖Google用户量最多的各款产品和服务,包括搜索(Search)、展示(Display)、YouTube及GooglePlay应用商店,并可在GoogleAds......
  • SpringBoot集成Mongodb文档数据库
    添加Maven依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>配置Mongodb连接信息spring:data:mongodb:host:10.30.29.246......
  • SSM-企业人事信息管理系统-98194(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、
    企业人事信息管理系统的设计与实现摘 要由于数据库和数据仓库技术的快速发展,企业人事信息管理系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。人事管理系统对处理对象和服务对象,自身的系统结构,处理能力,都将适应技术发展的要求发生重大的变化。企业人事......
  • PHP转Go系列 | ThinkPHP与Gin框架之API接口签名设计实践
    大家好,我是码农先森。回想起以前用模版渲染数据的岁月,那时都没有API接口开发的概念。PHP服务端和前端HTML、CSS、JS代码混合式开发,也不分前端、后端程序员,大家都是全干工程师。随着前后端分离、移动端开发的兴起,用后端渲染数据的开发方式效率低下,已经不能满足业务对需求快速......
  • 异步优化与数据入库:顶点小说爬虫进阶实战
    顶点小说进阶建议这篇顶点小说进阶包括(数据入库、异步爬虫)看之前可以先看我之前发布的文章(从零开始学习Python爬虫:顶点小说全网爬取实战)入库#入库defsave_to_mysql(db_name,table_name,table_column_str,table_info_str):db=pymysql.connect(user='host',passw......
  • 基于django(爱抚宠物) 小程序设计和实现(源码+LW+部署讲解)
    感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的......
  • Python网络爬虫:Scrapy框架的全面解析
    Python网络爬虫:Scrapy框架的全面解析一、引言        在当今互联网的时代,数据是最重要的资源之一。为了获取这些数据,我们经常需要编写网络爬虫来从各种网站上抓取信息。Python作为一种强大的编程语言,拥有许多用于网络爬虫的工具和库。其中,Scrapy是一个功能强大且灵......
  • 简单爬虫案例——爬取快手视频
    网址:aHR0cHM6Ly93d3cua3VhaXNob3UuY29tL3NlYXJjaC92aWRlbz9zZWFyY2hLZXk9JUU2JThCJTg5JUU5JTlEJUEy找到视频接口:视频链接在photourl中 完整代码:importrequestsimportreurl='https://www.kuaishou.com/graphql'cookies={'did':'web_9e8cfa4403......