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

2024-01-03 11:47:53

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

在这里插入图片描述

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

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
	"net/url"
	"strings"
)

func main() {
	// 代理信息 // 提取代理ip
    // jshk.com.cn/mb/reg.asp?kefu=xjy&csdn
	proxy := "duoip:8000"
	// 采集的URL
	url := "https://www.1688.com/"

	// 设置代理
_PROXY_ENV := "http_proxy"
_HTTPS_PROXY_ENV := "https_proxy"
	http_proxy := proxy
	https_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): 打印商品信息。

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

文章来源:https://blog.csdn.net/weixin_44617651/article/details/135356469
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。