当前位置: 首页 > wzjs >正文

支持ipv6网站开发wordpress 精简主题

支持ipv6网站开发,wordpress 精简主题,做新的网站,深圳网站建设的费用一、爬取中国天气网所有地区当天的天气数据(PyCharm): 网址:https://www.weather.com.cn/ 下面爬取数据: 因为现在已经到了夜间,所以白天的数据已经不见了,但原理是一样的。 二、代码以及详情…

一、爬取中国天气网所有地区当天的天气数据(PyCharm):

网址:https://www.weather.com.cn/

下面爬取数据:

因为现在已经到了夜间,所以白天的数据已经不见了,但原理是一样的。

二、代码以及详情解释:

 具体的代码的url以及headers是要从检查里面找的:

 

以及这些元素代码的寻找:

这个代码是一个用于从中国天气网(weather.com.cn)抓取天气信息的Python脚本。它使用了 requests 库发送HTTP请求,并使用 BeautifulSoup 库解析HTML内容。以下是代码的主要功能和相关知识点的罗列:


代码功能概述

  1. 遍历多个地区:代码通过遍历一个地区列表(area),构造不同的URL来获取不同地区的天气信息。

  2. 发送HTTP请求:使用 requests.get() 发送HTTP请求,获取网页的HTML内容。

  3. 解析HTML:使用 BeautifulSoup 解析HTML内容,提取所需的天气信息。

  4. 提取天气信息:从HTML中提取城市名称、上午天气、上午风力风向、上午最高温度、晚上天气、晚上风力风向、晚上最低温度等信息。

  5. 去重处理:使用集合 processed_cities 来避免重复处理同一个城市的天气信息。

  6. 打印结果:将提取的天气信息格式化输出到控制台。


涉及的知识点

1. Python基础
  • 列表与循环

    • 使用列表 area 存储地区代码。

    • 使用 for 循环遍历列表中的每个地区。

  • 字符串格式化

    • 使用 f-string(如 f"https://www.weather.com.cn/textFC/{page}.shtml")动态构造URL。

  • 集合(Set)

    • 使用集合 processed_cities 来存储已经处理过的城市名称,确保每个城市只被处理一次。

2. HTTP请求
  • requests 库

    • 使用 requests.get() 发送HTTP GET请求,获取网页内容。

    • 设置请求头 headers,模拟浏览器访问,避免被网站反爬虫机制拦截。

    • 使用 res.encoding = 'utf-8' 设置响应内容的编码为UTF-8,确保中文内容正确显示。

3. HTML解析
  • BeautifulSoup 库

    • 使用 BeautifulSoup(res.text, 'lxml') 解析HTML内容,lxml 是解析器。

    • 使用 soup.select() 方法通过CSS选择器查找HTML元素。

    • 使用 find() 和 find_all() 方法查找特定的HTML标签和属性。

4. HTML结构与CSS选择器
  • HTML表格结构

    • 网页中的天气信息以表格形式展示,代码通过查找 <div class="conMidtab2"> 和 <tr><td> 标签来提取数据。

  • CSS选择器

    • 使用 div.conMidtab2 选择所有 class 为 conMidtab2 的 <div> 元素。

    • 使用 tr 选择表格行,td 选择表格单元格。

  • HTML属性

    • 通过 width 属性(如 width='83')定位特定的表格单元格。

5. 数据提取与处理
  • 提取文本内容

    • 使用 .string 提取HTML标签内的文本内容(如 tr.find('td', width='83').a.string)。

  • 条件判断

    • 使用 if 语句检查是否存在某个HTML元素或属性,避免因元素不存在而报错。

  • 数据格式化与输出

    • 使用 print() 函数将提取的天气信息格式化输出。

6. 去重与集合
  • 集合(Set)

    • 使用集合 processed_cities 存储已经处理过的城市名称,利用集合的唯一性特性避免重复处理。

7. 异常处理(未显式实现)
  • 代码中没有显式的异常处理(如 try-except),但在实际应用中,建议添加异常处理机制,以应对网络请求失败或HTML解析错误等情况。


代码执行流程

  1. 遍历地区列表

    • 对每个地区代码(如 hbdb 等),构造对应的URL。

  2. 发送HTTP请求

    • 使用 requests.get() 获取网页内容。

  3. 解析HTML

    • 使用 BeautifulSoup 解析HTML,查找包含天气信息的表格。

  4. 提取天气信息

    • 遍历表格行,提取城市名称、天气、风力风向、温度等信息。

  5. 去重处理

    • 使用集合 processed_cities 避免重复处理同一城市。

  6. 输出结果

    • 将提取的天气信息格式化输出到控制台。


总结

这段代码展示了如何使用Python进行网页抓取和HTML解析,涉及的知识点包括:

  • Python基础(列表、循环、字符串格式化、集合)

  • HTTP请求(requests 库)

  • HTML解析(BeautifulSoup 库)

  • HTML结构与CSS选择器

  • 数据提取与处理

  • 去重与集合

通过这段代码,可以学习如何从网页中提取结构化数据,并将其用于进一步的分析或存储。

import requests
from bs4 import BeautifulSoup# 定义地区列表
area = ["hb", "db", "hd", "hz", "hn", "xb", "xn", "gat"]for page in area:# 构造 URLurl = f"https://www.weather.com.cn/textFC/{page}.shtml"headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0"}# 发送 HTTP 请求获取网页内容res = requests.get(url=url, headers=headers)res.encoding = 'utf-8'  # 设置编码为 UTF-8# 使用 BeautifulSoup 解析网页内容soup = BeautifulSoup(res.text, 'lxml')# 用于存储已经处理过的城市名称processed_cities = set()# 遍历所有 class 为 conMidtab2 的 div 元素for div in soup.select('div.conMidtab2'):# 遍历 div 中的所有 tr 元素(表格行)for tr in div.select('tr'):# 检查当前行是否包含宽度为 83 的 td 元素,该元素可能包含城市信息if tr.find('td', width='83'):# 检查宽度为 83 的 td 元素中是否有 a 标签,a 标签内通常是城市名if tr.find('td', width='83').a:# 提取城市名city = tr.find('td', width='83').a.string# 如果城市已经处理过,则跳过if city in processed_cities:continue# 否则,将城市添加到已处理集合中processed_cities.add(city)# 打印城市名print(f"城市:{city}")# 提取上午天气信息morning_weather_td = tr.find('td', width='89')if morning_weather_td:morning_weather = morning_weather_td.stringprint(f"上午天气:{morning_weather}")# 提取上午风力风向信息morning_wind_td = tr.find('td', width='162')if morning_wind_td:spans = morning_wind_td.find_all('span')if len(spans) >= 2:morning_wind_1 = spans[0].stringmorning_wind_2 = spans[1].stringprint(f"上午风力风向:{morning_wind_1} {morning_wind_2}")# 提取上午最高温度morning_max_temp_td = tr.find('td', width='92')if morning_max_temp_td:morning_max_temp = morning_max_temp_td.stringprint(f"上午最高温度:{morning_max_temp}")# 提取晚上天气信息night_weather_td = tr.find('td', width='98')if night_weather_td:night_weather = night_weather_td.stringprint(f"晚上天气:{night_weather}")# 提取晚上风力风向信息night_wind_td = tr.find('td', width='177')if night_wind_td:spans = night_wind_td.find_all('span')if len(spans) >= 2:night_wind_1 = spans[0].stringnight_wind_2 = spans[1].stringprint(f"晚上风力风向:{night_wind_1} {night_wind_2}")# 提取晚上最低温度night_min_temp_td = tr.find('td', width='86')if night_min_temp_td:night_min_temp = night_min_temp_td.stringprint(f"晚上最低温度:{night_min_temp}")# 打印分隔线,用于区分不同城市的天气信息print('-----------------')else:# 如果当前行不包含宽度为 83 的 td 元素,跳过该行continue

三、代码运行结果展示:

 

 


文章转载自:

http://yGb663Uv.mLwpr.cn
http://jv8mM8QE.mLwpr.cn
http://7VKBA3yJ.mLwpr.cn
http://JpLP4CAz.mLwpr.cn
http://uF8zFrtp.mLwpr.cn
http://qMtd0oe5.mLwpr.cn
http://MgOgcjAc.mLwpr.cn
http://3MJYrIKF.mLwpr.cn
http://RwK4C6LG.mLwpr.cn
http://5muzyJeE.mLwpr.cn
http://1TxQceg6.mLwpr.cn
http://Lwz4WxJH.mLwpr.cn
http://VrdCllPb.mLwpr.cn
http://ZtNSaBdD.mLwpr.cn
http://BPE3Vqjk.mLwpr.cn
http://nCeRitgU.mLwpr.cn
http://1kus9jKs.mLwpr.cn
http://fsr2HoqR.mLwpr.cn
http://1UrZncPD.mLwpr.cn
http://VFa5NnWM.mLwpr.cn
http://rIL2NpJD.mLwpr.cn
http://mVksNBZN.mLwpr.cn
http://1kMzTOGq.mLwpr.cn
http://JvninLTq.mLwpr.cn
http://eVd7jd5X.mLwpr.cn
http://0XBqVkAq.mLwpr.cn
http://w7FShqiq.mLwpr.cn
http://Y91w74I4.mLwpr.cn
http://YyDmuQYJ.mLwpr.cn
http://ctWI3SI5.mLwpr.cn
http://www.dtcms.com/wzjs/675272.html

相关文章:

  • 网站建设的简历制作wordpress问答模板
  • 如何做网站海报重庆市住房和城乡建设人才促进网
  • 贵州省住房和城乡建设厅查询网站首页邯郸建移动网站费用
  • 网站底部加编码网页游戏开发技术
  • 做网站自己装服务器软件开发用的软件
  • 服装公司网站定位wordpress 图片 alt
  • 南通网站免费建设兴义网站制作
  • 网站推广链接怎么做做淘宝客的网站怎么备案
  • 学校网站建设财务报表淘宝运营工作内容
  • 网站开发源代码wordpress国外主题公园
  • 建站行业导航网站装修技术培训去哪里学
  • 国外免费网站域名服务器查询学校官网主页网页设计
  • 站长之家ip查询工具wordpress 制作瀑布流
  • 网站建设与维护模拟一东莞常平镇邮政编码
  • 备案关闭网站建设影响网站双机热备怎么做
  • wordpress网站无法打开阜阳专业网站建设
  • 广州南沙网站建设搜狐网站建设设计
  • 广州金山大厦 网站建设网站建设教程资源
  • 四川建设厅官方网站是多少wordpress sql
  • 哈尔滨网站建设nsstd做网站的图片Pc端和手机端的区别
  • 公司软件网站建设wordpress本地登陆
  • 云建站自动建站系统源码做网站申请域名
  • 自己建设一个网站需要多少钱内蒙古微信公众号114查
  • 门户网站做公众号的好处北京网站建设平台
  • 建网站兴田德润企业邮箱后缀
  • php网站开发账号密码自己做的视频发什么网站
  • asp net网站建设个人主页制作教程
  • 怎样才能建立网站刷神马seo排名首页排名
  • 临沂法律网站开发公司wordpress时间插件下载
  • 网站开发有哪几种语言个人中心网页设计