Go采集1688网站数据对比商品价格

最近看了下多多和1688的一些商品价格,发现好多店铺都是无货源拿货一件发货,这就导致层层叠加价格翻了不知道几倍,真所谓多花钱办的事还是一样,因此,今天我就通过一个爬虫程序监控对应商品价格,了解行业龙头低价是多少,防止被割韭菜。

在这里插入图片描述

以下是使用 Go 语言编写的爬虫程序,它可以爬取 采集1688网站数据 的内容。这个程序使用了两个包:net/http 和 html 解析器。代理信息使用了 http_proxy 和 https_proxy 环境变量。

package mainimport ("fmt""io/ioutil""log""net/http""net/url""strings"
)func main() {// 代理信息 // 提取代理ip// jshk.com.cn/mb/reg.asp?kefu=xjy&csdnproxy := "duoip:8000"// 采集的URLurl := "https://www.1688.com/"// 设置代理
_PROXY_ENV := "http_proxy"
_HTTPS_PROXY_ENV := "https_proxy"http_proxy := proxyhttps_proxy := proxy// 设置环境变量if err := os.Setenv(_PROXY_ENV, http_proxy); err != nil {log.Fatal(err)}if err := os.Setenv(_HTTPS_PROXY_ENV, https_proxy); err != nil {log.Fatal(err)}// 发送请求resp, err := http.Get(url)if err != nil {log.Fatal(err)}defer resp.Body.Close()// 读取响应体body, err := ioutil.ReadAll(resp.Body)if err != nil {log.Fatal(err)}// 解析响应体body = strings.Replace(string(body), "<script>", "", -1)body = strings.Replace(string(body), "</script>", "", -1)doc, err := goquery.NewDocumentFromReader(strings.NewReader(body))if err != nil {log.Fatal(err)}// 获取商品列表list := doc.Find(".product-list")for _, item := range list.FindAll("li") {// 获取商品标题title := item.Find(".product-title").Text()// 获取商品链接link := item.Find(".product-title a").Attr("href")// 打印商品信息fmt.Printf("标题: %s, 链接: %s\n", title, link)}
}

以下是每行代码的解释:

1、import "fmt": 导入 fmt 包,用于打印输出。

2、import "io/ioutil": 导入 ioutil 包,用于读取文件。

3、import "log": 导入 log 包,用于打印错误信息。

4、import "net/http": 导入 http 包,用于发送 HTTP 请求。

5、import "net/url": 导入 url 包,用于处理 URL。

6、import "strings": 导入 strings 包,用于字符串处理。

7、func main() { ..、}: 定义主函数。

8、proxy := "duoip:8000": 定义代理信息。

9、url := "https://www.1688.com/": 定义采集的URL。

10、http_proxy := proxy: 设置 http_proxy 环境变量。

11、https_proxy := proxy: 设置 https_proxy 环境变量。

12、if err := os.Setenv(_PROXY_ENV, http_proxy); err != nil {...}: 设置 http_proxy 环境变量。

13、if err := os.Setenv(_HTTPS_PROXY_ENV, https_proxy); err != nil {...}: 设置 https_proxy 环境变量。

14、resp, err := http.Get(url): 发送 GET 请求到 URL。

15、defer resp.Body.Close(): 闭包函数,关闭响应体。

16、body, err := ioutil.ReadAll(resp.Body): 读取响应体到内存。

17、doc, err := goquery.NewDocumentFromReader(strings.NewReader(body)): 使用 goquery 解析响应体。

18、list := doc.Find(".product-list"): 获取商品列表。

19、for _, item := range list.FindAll("li") {...}: 遍历商品列表。

20、title := item.Find(".product-title").Text(): 获取商品标题。

21、link := item.Find(".product-title a").Attr("href"): 获取商品链接。

22、fmt.Printf("标题: %s, 链接: %s\n", title, link): 打印商品信息。

其实很多东西从源头商家拿货是很便宜的,而且质量没的说杠杠的,就是有些人投机取巧用别的店铺倒卖提高价格,发货什么的都不用自己操作,只需要手动提交订单就行,轻松就能赚取差价。上面的代码很完善,解释也挺不错的,如果有啥问题可以评论区留言讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/334761.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MCU、MPU、SOC简介

文章目录 前言一、MCU二、MPU三、SOC总结 前言 随着处理器技术的不断发展&#xff0c;CPU(Central Processing Unit)的发展逐渐出现三种分支&#xff0c;分别是MCU(Micro Controller Unit&#xff0c;微控制器单元) 和MPU&#xff08;Micro Processor Unit&#xff0c;微处理器…

Java web设计:在线微友圈网站

项目背景 微友圈是一个基于Java Web开发的社交网络平台&#xff0c;旨在为用户提供一个轻松互动、分享生活和交流观点的在线社区。随着社交网络的普及&#xff0c;人们更加渴望与朋友、家人以及其他志同道合的人保持联系并分享彼此的生活点滴。微友圈的目标是打造一个简洁、高…

什么情况?DDD 中的每个任务都执行了两次?

最近在使用 COLA 框架自带的异步任务时&#xff0c;发现每次执行异步都执行了两次&#xff0c;如果一些没有做幂等的接口&#xff0c;这样是会有问题的&#xff0c;比如入库操作之类的&#xff0c;就会造成数据重复入库&#xff0c;造成严重 bug。 带着疑惑&#xff0c;开始了…

小巧且兼具高性能的小模型 TinyLlama 等

TinyLlama-1.1B 小模型在边缘设备上有着广泛的应用&#xff0c;如智能手机、物联网设备和嵌入式系统&#xff0c;这些边缘设备通常具有有限的计算能力和存储空间&#xff0c;它们无法有效地运行大型语言模型。因此&#xff0c;深入探究小型模型显得尤为重要。 来自新加坡科技…

搜维尔科技:第九届元宇宙数字人设计大赛作品规范解读!

作品提交 参赛小组需要将作品上传至百度网盘&#xff0c;并将分享链接发送至frankaxis3d.cn邮箱。邮寄格式如下&#xff1a; 邮件标题&#xff1a;作品名称元宇宙数字人设计大赛作品 邮件内容标明&#xff1a;学校名称、院系名称、作品名称、作者名称、联系电话及指导老师名…

Python 使用input函数从键盘输入数据

在Python中&#xff0c;input()函数可以从键盘获取用户的输入数据。当我们使用input()函数时&#xff0c;会暂停程序的执行&#xff0c;等待用户输入数据&#xff0c;并将用户输入的数据作为字符串返回。 如&#xff1a; name input("请输入你的姓名&#xff1a;"…

C#,入门教程(12)——数组及数组使用的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(11)——枚举&#xff08;Enum&#xff09;的基础知识和高级应用https://blog.csdn.net/beijinghorn/article/details/123917587 数组是一种数据集合&#xff0c;是一组完全相同的、按顺序存放的数据。 需要记住数组的几个特征&…

阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接

阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接 第一步&#xff1a;安装 SQL Server 数据库 这是一个很详细的安装教程&#xff0c;可以参考一下 安装SQL Server详细教程 需要注意&#xff1a;安装实例时&#xff0c;建议在‘身份验证模式’直接选择“混合模式”…

2023年阿里云云栖大会:前沿技术发布与未来展望

在2023年的阿里云云栖大会上&#xff0c;我见证了云计算和人工智能领域的又一历史性时刻。这次大会不仅是对未来科技趋势的一次深入探索&#xff0c;更是阿里云技术实力和创新能力的集中展示。 首先&#xff0c;千亿级参数规模的大模型通义千问2.0的发布&#xff0c;无疑将人工…

C# 日期转换“陷阱”

在 C# 中&#xff0c;日期转换可能会遇到一些陷阱。以下是一些常见的陷阱和如何避免它们&#xff1a; 时区问题 日期和时间通常与时区相关&#xff0c;但在转换时可能会忽略或混淆时区信息。确保在转换日期时始终考虑到时区&#xff0c;并使用正确的时区进行转换。 DateTime…

openai API key 提示你的卡被拒绝怎么办?

openai API key 对于IP的要求非常的严格&#xff0c;以前你开腾讯云、阿里云的服务器都可以绑定、现在就不行了&#xff0c;一定要纯净的IP才可以绑定 一、排除法 1、首先确保自己的账号是没有被封的&#xff0c;可以正常使用的 2、确保银行卡是可以支持openai的银行卡 3、…

Unity3d 实现直播功能(无需sdk接入)

Unity3d 实现直播功能 需要插件 :VideoCapture 插件地址(免费的就行) 原理:客户端通过 VideoCapture 插件实现推流nodejs视频流转服务进行转发,播放器实现rtmp拉流 废话不多说,直接上 CaptureSource我选择的是屏幕录制,也可以是其他源 CaptureType选择LIVE–直播形式 LiveSt…