Go实现爬取城市七天内的天气

简介: 代码仅供参考学习使用
packagemainimport (
"flag""github.com/go-rod/rod""log")
const (
nationwideUrl="https://www.tianqi.com/chinacity.html")
funcmain() {
varcity=flag.String("c", "", "the config file")
flag.Parse()
url :=cityUrl(*city)
ifurl=="" {
log.Fatalf("url is empty")
return    }
weatherData(url)
}
funcweatherData(urlstring) {
page :=rod.New().MustConnect().MustPage(url)
//直接使用选择器选择七天天气内容体projects :=page.MustElement("ul.weaul").MustElements("li")
for_, project :=rangeprojects {
var (
datestringweatherstringcentigradestring        )
//获取日期ifok, dateEle, _ :=project.Has(".weaul_q"); ok {
ifdateEle.MustHas(".fl") {
date=dateEle.MustElement(".fl").MustText()
            }
        }
for_, weatherEle :=rangeproject.MustElements(".weaul_z") {
//如果存在span则是温度 否则是天气情况ifweatherEle.MustHas("span") {
var (
startCstringendCstring                )
//获取温度fork, cEle :=rangeweatherEle.MustElements("span") {
ifk==0 {
startC=cEle.MustText()
                    } else {
endC=cEle.MustText()
                    }
                }
centigrade=startC+"~"+endC            } else {
weather=weatherEle.MustText()
            }
        }
log.Printf("日期:%s|天气:%s|摄氏度:%s℃\n", date, weather, centigrade)
    }
}
funccityUrl(citystring) string {
cityMap :=make(map[string]string)
page :=rod.New().MustConnect().MustPage(nationwideUrl)
provinceProjects :=page.MustElement(".citybox").MustElements("h2")
cityProjects :=page.MustElement(".citybox").MustElements("span")
for_, section :=rangeprovinceProjects {
cityMap[section.MustElement("a").MustText()] =section.MustElement("a").MustProperty("href").String()
    }
for_, section :=rangecityProjects {
for_, a :=rangesection.MustElements("a") {
cityMap[a.MustText()] =a.MustProperty("href").String()
        }
    }
ifhref, ok :=cityMap[city]; ok {
returnhref+"7/"    }
return""}

说明:

1、新增文件夹

2、新增文件main.go

3、复制代码

4、初始化mod: go mod init weather

5、拉取依赖 go mod tidy

6、 运行:go run main.go -c 城市名 如 :go run main.go -c 河南


运行结果如下:

2023/06/29 16:39:30 日期:06-29|天气:阴|摄氏度:28~36℃

2023/06/29 16:39:30 日期:06-30|天气:小雨到中雨|摄氏度:26~29℃

2023/06/29 16:39:30 日期:07-01|天气:多云转阴|摄氏度:26~32℃

2023/06/29 16:39:30 日期:07-02|天气:小雨|摄氏度:27~32℃

2023/06/29 16:39:30 日期:07-03|天气:小雨转阴|摄氏度:27~34℃

2023/06/29 16:39:30 日期:07-04|天气:阴转雨|摄氏度:27~35℃

2023/06/29 16:39:30 日期:07-05|天气:小雨转多云|摄氏度:24~32℃


目录
相关文章
|
数据采集 JavaScript 数据安全/隐私保护
「Python」爬虫实战-北京公交线路信息爬取(requests+bs4)
使用requests爬取北京公交线路信息,目标网址为[https://beijing.8684.cn/](https://beijing.8684.cn/)。 爬取的具体信息为公交线路名称、公交的运营范围、运行时间、参考票价、公交所属的公司以及服务热线、公交来回线路的途径站点。
2323 0
|
2月前
|
数据采集
以“股票代码实时抓取股票信息”为例的爬虫案例
爬虫—根据股票代码实时抓取股票信息
114 0
|
3月前
|
Python
Python:2018年北京天气情况
Python:2018年北京天气情况
58 0
|
7月前
|
数据采集 JavaScript 前端开发
使用Go和JavaScript爬取股吧动态信息的完整指南
本文介绍了如何使用Go和JavaScript构建网络爬虫,从股吧网站抓取实时股市信息。通过设置代理服务器以应对反爬策略,利用`got`库执行JavaScript提取动态数据,如用户讨论和市场分析。示例代码展示了爬虫的实现过程,包括浏览器实例创建、代理配置、JavaScript执行及数据打印。此方法有助于投资者及时获取市场资讯,为决策提供支持。
104 4
使用Go和JavaScript爬取股吧动态信息的完整指南
|
6月前
|
数据采集 JSON 算法
使用Python爬取华为市场APP应用进行分析
这个网站也是作者最近接触到的一个APP应用市场类网站。讲实话,还是蛮适合新手朋友去动手学习的。毕竟爬虫领域要想进步,还是需要多实战、多分析!该网站中的一些小细节也是能够锻炼分析能力的,也有反爬虫处理。甚至是下载APP的话在Web端是无法拿到APK下载的直链,需要去APP端接口数据获取
|
7月前
|
开发工具
查询天气预报案例
这是一个关于如何查询天气预报的步骤指南,包括五个步骤:找到阿里云的天气服务、购买服务、获取AppCode和秘钥、参考SDK调用接口以及使用Hutool工具进行接口调用。提供了详细的操作截图和接口返回的示例数据。完整文档链接可在文中找到。
305 4
|
Python
python 进行西安2023年天气信息,分析天气趋势预测 数据代码评论区自取
python 进行西安2023年天气信息,分析天气趋势预测 数据代码评论区自取
81 0
|
存储 JavaScript 关系型数据库
中国国家统计局发布的行政区划数据-nodejs抓取
由于国家的行政区划每年都有变化,所以经常需要更新最新的数据,这里提供一个nodejs版本mysql数据存储的抓取示例。
中国国家统计局发布的行政区划数据-nodejs抓取
|
数据采集 Python
使用 lxml 爬取四川省各城市天气预报
使用 lxml 爬取四川省各城市天气预报
203 1
使用 lxml 爬取四川省各城市天气预报
Crawl:利用bs4和requests爬取了国内顶级某房源平台(2020年7月2日上海二手房)将近30*100多条数据并进行房价分析以及预测
Crawl:利用bs4和requests爬取了国内顶级某房源平台(2020年7月2日上海二手房)将近30*100多条数据并进行房价分析以及预测
Crawl:利用bs4和requests爬取了国内顶级某房源平台(2020年7月2日上海二手房)将近30*100多条数据并进行房价分析以及预测