python爬虫入门实战---------一周天气预报爬取_Python爬虫入门实战--------一周天气预报爬取【转载】【没有分析...

Python爬虫入门实战--------一周天气预报爬取【转载】【没有分析

Python爬虫入门实战--------一周天气预报爬取【转载】【没有分析】

来源:https://blog.csdn.net/qq_40705355/article/details/83856960

lchfithwenh.png

七天天气来源:http://www.weather.com.cn/weather/101120101.shtml

源程序

import csv

import urllib.request

from bs4 import BeautifulSoup

''' 模拟浏览器,得到数据 '''

#更新为济南的天气网址

url = "http://www.weather.com.cn/weather/101120101.shtml"header = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36") # 设置头部信息

opener = urllib.request.build_opener() # 修改头部信息

opener.addheaders = [header] #修改头部信息

request = urllib.request.Request(url) # 制作请求

response = urllib.request.urlopen(request) # 得到请求的应答包

html = response.read() #将应答包里面的内容读取出来

html = html.decode('utf-8') # 使用utf-8进行编码,不重新编码就会成乱码

''' 模拟浏览器,得到数据 '''

final = [] #初始化一个空的list,我们为将最终的的数据保存到list

bs = BeautifulSoup(html,"html.parser") # 创建BeautifulSoup对象

body = bs.body # 获取body部分

data = body.find('div',{'id':'7d'}) # 找到id为7d的div

ul = data.find('ul') # 获取ul部分

li = ul.find_all('li') # 获取所有的li

# print (li)

i = 0

for day in li: # 对每个li标签中的内容进行遍历

if i < 7:

temp = []

date = day.find('h1').string # 找到日期

# print (date)

temp.append(date) # 添加到temp中

# print (temp)

inf = day.find_all('p') # 找到li中的所有p标签

# print(inf)

# print (inf[0])

temp.append(inf[0].string) # 第一个p标签中的内容(天气状况)加到temp中

if inf[1].find('span') is None:

temperature_highest = None # 天气预报可能没有当天的最高气温(到了傍晚,就是这样),需要加个判断语句,来输出最低气温

else:

temperature_highest = inf[1].find('span').string # 找到最高温度

temperature_highest = temperature_highest.replace('℃', '') # 到了晚上网站会变,最高温度后面也有个℃

temperature_lowest = inf[1].find('i').string #找到最低温度

temperature_lowest = temperature_lowest.replace('℃', '') # # 最低温度后面有个℃,去掉这个符号

temp.append(temperature_highest)

temp.append(temperature_lowest)

final.append(temp)

i = i +1

# print(final)

with open('weather.csv', 'a', errors='ignore', newline='') as f:

f_csv = csv.writer(f)

f_csv.writerows(final)

效果图

wu4ondc1p3d.png

自己分析:固定开头

import csv

import urllib.request

from bs4 import BeautifulSoup

''' 模拟浏览器,得到数据 '''

#更新为济南的天气网址

url = "http://www.weather.com.cn/weather/101120101.shtml"

header = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36") # 设置头部信息

opener = urllib.request.build_opener() # 修改头部信息

opener.addheaders = [header] #修改头部信息

request = urllib.request.Request(url) # 制作请求

response = urllib.request.urlopen(request) # 得到请求的应答包

html = response.read() #将应答包里面的内容读取出来

html = html.decode('utf-8') # 使用utf-8进行编码,不重新编码就会成乱码

自己分析:分析

选取元素 特别好用。

nq0jryrdy2g.png

lsennonlhmo.png

Python爬虫入门实战--------一周天气预报爬取【转载】【没有分析相关教程

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

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

相关文章

Spring IOC原理总结

Spring容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息&#xff0c;并在Spring容器中生成一份相应的Bean配置注册表&#xff0c;然后根据这张注册表实例化Bean&#xff0c;装配好Bean之间的依赖关系&#xff0c;为上层应用提供准备就绪的运行环境。 Bean缓存池&…

Linux开发工具——gcc篇

gcc的使用 文章目录 gcc的使用 历史遗留问题&#xff08;普通用户sudo&#xff09; gcc编译过程 预处理&#xff08;进行宏替换&#xff09; 编译&#xff08;生成汇编&#xff09; 汇编&#xff08;生成机器可识别代码&#xff09; 链接&#xff08;生成可执行文件或库文件&a…

Spring中ioc的实现原理

学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念&#xff0c;对于初学Spring的人来说&#xff0c;总觉得IoC 、DI这两个概念是模糊不清的&#xff0c;是很难理解的&#xff0c;今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及…

如何将一个向量投影到一个平面上_CameraLidar投影:2D3D导航

点击上方“AI小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达图1.图像上的激光雷达点激光雷达和照相机是用于感知和理解场景的两个基本传感器。他们建立周边环境模型、提供检测和确定其他对象位置的方法&#xff0c;从而为机器人提…

JAVA中和、||和|的区别?

问题一&#xff1a;JAVA中&&和&、||和|&#xff08;短路与和逻辑与、短路或和逻辑或&#xff09;的区别&#xff1f; 首先名称是不同的 逻辑运算符&#xff1a;&#xff06;&#xff06;逻辑与  &#xff5c;&#xff5c;逻辑或  它们都是逻辑运算符 位运算…

pppoe拨号的外网ip无法ping通_【思唯网络学院】 五大网络概念:IP地址、子网掩码、网关、DHCP服务和PPPoE拨号...

5G技术的更新&#xff0c;推动了新一代的网络通信发展&#xff0c;家庭宽带上网也从最初的十几K的速度&#xff0c;提升到了现在动则上百上千兆的速度&#xff0c;很多有部署了家庭NAS的用户&#xff0c;甚至都已经更新到了10G级别的内部局域网了。在这个信息互联的时代&#x…

MySQL数据库的数据类型以及取值范围详解

主要包括以下五大类&#xff1a; 整数类型&#xff1a;BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT 浮点数类型&#xff1a;FLOAT、DOUBLE、DECIMAL 字符串类型&#xff1a;CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDI…

flex布局_flex布局的 flex(felx-grow、flex-shrink、flex-basis)详解

flex布局中的flex-grow,flex-shrink,flex-basis接上篇文章&#xff0c;1. flex-grow属性flex-grow定义剩余空间的分成。默认为0&#xff0c;即如果存在剩余空间&#xff0c;也不放大。如何理解这里的剩余空间呢&#xff0c;用例子来说明吧。默认的情况(flex-grow:0)在浏览器下是…

Mina网络通信框架

认识 Mina Apache Mina Server 是一个网络通信应用框架&#xff0c;与 Netty 出自同一作者&#xff0c;Netty 借鉴了部分 Mina 的设计思路。 Mina 主要是对基于 TCP/IP、UDP/IP 协议栈的通信框架&#xff0c;Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用&#x…

每个tabpage中都有一个dategridview_每个女人,都有一个礼服梦

●今天&#xff0c;我要带着大家跟随几部经典电影&#xff0c;来开启一场关于礼服的时空穿越。01. 《爱玛》//关键词&#xff1a;19世纪初英国乡村经历了巴洛克风格的洗礼&#xff0c;服饰的整体风格变得柔和了不少&#xff0c;蕾丝、细纱、蝴蝶结这些浪漫元素&#xff0c;是这…

ssm框架sql换成MySQL_搭建ssm框架,可实现登录和数据展示以及增删改查

需求&#xff1a;后台使用ssm(spring-springMVC-mybatis)进行整合前台使用bootstrap框架前后台交互使用Ajax进行发送表结构&#xff1a;登录页面后显示所有用户信息&#xff0c;可对每条进行增删改查登录时也使用本表的user_name和user_pwd进行校验项目目录结构步骤一&#xff…

巧妙mybatis避免Where 空条件的尴尬

我就废话不多说了&#xff0c;大家还是直接看代码吧~ <select id"findActiveBlogLike" resultType"Blog">SELECT * FROM BLOGWHERE<if test"state ! null">state #{state}</if> </select>如果state参数为空时&#x…

numpy 矩阵与向量相乘_高能!8段代码演示Numpy数据运算的神操作

作者&#xff5c;王天庆来源&#xff5c;大数据(ID&#xff1a;hzdashuju)导读&#xff1a;本文介绍一下在Python科学计算中非常重要的一个库——Numpy。Numpy是Numerical Python extensions 的缩写&#xff0c;字面意思是Python数值计算扩展。Numpy是Python中众多机器学习库的…

Spring Boot——日志配置

日志&#xff0c;通常不会在需求阶段作为一个功能单独提出来&#xff0c;也不会在产品方案中看到它的细节。但是&#xff0c;这丝毫不影响它在任何一个系统中的重要的地位。 为了保证服务的高可用&#xff0c;发现问题一定要即使&#xff0c;解决问题一定要迅速&#xff0c;所…

python2转python3代码_Python2代码转成Python3代码

1.利用anaconda软件自带的功能: 1.找2to3.py文件 我的anaconda装在了D盘下的Anaconda文件夹下 你需要找到anaconda下的script文件夹里面的2to3-script.py文件(由于版本不同,可能名字不太一样,但是一定是2to3开头,而且是py文件)打开2to3-script.py文件后(内容肯定都是一样的):2.…

haproxy keepalived_Haproxy+KeepAlived+Mycat实现高可用集群

1.什么是HaproxyHAProxy是一个使用C语言编写的自由及开放源代码软件[1]&#xff0c;其提供高可用性、负载均衡&#xff0c;以及基于TCP和HTTP的应用程序代理。HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬…

IO与NIO

1、阻塞与非阻塞 阻塞与非阻塞是描述进程在访问某个资源时&#xff0c;数据是否准备就绪的的一种处理方式。当数据没有准备就绪时&#xff1a; 阻塞&#xff1a;线程持续等待资源中数据准备完成&#xff0c;直到返回响应结果。非阻塞&#xff1a;线程直接返回结果&#xff0c…

java spark wordcount_提交任务到spark(以wordcount为例)

1、首先需要搭建好hadoopspark环境&#xff0c;并保证服务正常。本文以wordcount为例。2、创建源文件&#xff0c;即输入源。hello.txt文件&#xff0c;内容如下&#xff1a;tom jerryhenry jimsuse lusy注&#xff1a;以空格为分隔符3、然后执行如下命令&#xff1a;hadoop fs…

redis的四大特性和原理

一、redis的过期 A.应用场景 cookie自动过期&#xff0c;限时优惠价格&#xff0c;限制每分钟的访问次数 B.实现方式 setex(String key, int seconds, String value) expire key time #秒 pexpire key time #毫秒 expireat key time #秒 pexpireat key time #毫秒 C.实…

默认文献工具_工具分享??超好用的SCI外文文献下载工具

第一步&#xff1a;打开工具第二步&#xff1a;查找目标文献的DOI号&#xff08;知网、谷歌学术等等...&#xff09;&#xff0c;然后复制。第三步&#xff1a;粘贴到工具里面&#xff0c;然后点击「立即下载」第四步&#xff1a;点击立即下载之后&#xff0c;会自动打开默认浏…