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缓存池&…

java 线程 释放_java线程似乎不会被释放

我没有回答为什么第四个连接挂起,除了说这里是一个有效的代码版本…public class Test {public static void main(String[] args) throws Exception {ServerSocket listen new ServerSocket(9999);ExecutorService threadPool Executors.newFixedThreadPool(3);while(true) {…

Linux开发工具——gcc篇

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

python 递归函数例子_python函数递归的几个例子

斐波那契数列1,1,2,3,5,8,13,21……#!/usr/bin/env python# encoding: utf-8def fib(n):if n 1 or n 2:return 1else:return fib(n-1) fib(n-2)print fib(6)汉诺塔#!/usr/bin/env python# encoding: utf-8count 0def hanoi(n,a左,b中,c"右"):global countif n 1…

Shiro——RememberMe

Shiro提供了记住我&#xff08;RememberMe&#xff09;的功能&#xff0c;比如访问如淘宝等一些网站时&#xff0c;关闭了浏览器下次再打开时还是能记住你是谁&#xff0c;下次访问时无需再登录即可访问&#xff0c;基本流程如下&#xff1a; 1、首先在登录页面选中RememberMe…

python报表_Python生成报表

excel def export_teachers_excel(request): # 创建工作簿 wb xlwt.Workbook() # 添加工作表 sheet wb.add_sheet(老师信息表) # 查询所有老师的信息(注意&#xff1a;这个地方稍后需要优化) queryset Teacher.objects.all() # 向Excel表单中写入表头 colnames (姓名, 介绍…

Spring中ioc的实现原理

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

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

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

java类加载机制面试题_通过面试题解析 Java 类加载机制

在许多Java面试中&#xff0c;我们经常会看到关于Java类加载机制的考察&#xff0c;例如下面这道题&#xff1a;class Grandpa{static{System.out.println("爷爷在静态代码块");}}class Father extends Grandpa{static{System.out.println("爸爸在静态代码块&qu…

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…

jsp import mysql con_jsp的分页查询的代码(mysql数据库)

[原来没有写过&#xff0c;听朋友说&#xff0c;比较难&#xff0c;就试一下&#xff0c;还是挺简单的&#xff0c;只不过&#xff0c;具体实用方面还得自己写&#xff0c;没有什么难的&#xff0c;自己看看就懂了。bean文件&#xff1a;package bean;/** * jspjava bea这个功能…

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)在浏览器下是…

python教学视频r_R Tutorial

教程列表&#xff1a;Customizing The Look of R Studio (R Tutorial 1.11)Correlation and Covariance in R (R Tutorial 4.9)Checking Linear Regression Assumptions in R (R Tutorial 5.2)Changing a Numeric Variable to Categorical Variable in R (R Tutorial 5.4)Chang…

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中众多机器学习库的…