我假设你已经符合上述的标准,现在我们就来开始第一个爬虫的网站,我们首先挑选一个下手;附上URL:中国天气网(http://www.weather.com.cn/weather1d/101280101.shtml#dingzhi_first)

###第一步:

请确保你已经安装了Requests和Beautifulsoup4的库,否则你可以打开CMD(命令提示符)然后输入

pip3 install requests
pip3 install Beautifulsoup4
pip3 install lxml
复制代码

安装完毕后接着打开你的编辑器,这里对编辑器不做纠结,用的顺手就好。

首先我们做爬虫,拿到手第一个步骤都是要先获取到网站的当前页的所有内容,即HTML标签。所以我们先要写一个获取到网页HTML标签的方法。

整个爬虫的的代码搭建我都采用的是将不同的功能做成不同的函数,在最后需要调用的时候进行传参调用就好了。

那么问题来了,为什么要这么做呢?

写代码作为萌新要思考几件事:

1、这个代码的复用性;

2、这个代码的语义化以及功能解耦;

3、是否美观简洁,让别人看你的代码能很清楚的理解你的逻辑;

代码展示:

上述代码几个地方我特别说明一下: ''' 抓取每天的天气数据

python 3.6.2
url:http://www.weather.com.cn/weather1d/101280101.shtml#dingzhi_first
'''
import requests
import bs4
复制代码

养成好习惯代码一开始的注释表明这是一个什么功能的Python文件,使用的版本是什么,URL地址是什么,帮助你下次打开的时候能快速理解这个文件的用途。

由于Requests和Beautifulsoup4是第三方的库,所以在下面要用import来进行引入

然后是

其中

def get_html(url):
复制代码

构造一个名为get_html的函数,并传入你要请求的URL地址进去,会返回一个请求后的结果,

构造好后,调用的时候直接

url = '包裹你的url'
get_html(url)
复制代码

然后同样备注好你的这个函数的功能是做什么的,headers里面包裹了一些伪装成浏览器访问的一些头部文件可以直接你复制过去使用。

这里要说一下为什么要做基础的伪装成浏览器,由于有了爬虫,自然就有反爬虫。有些网站为了恶意避免爬虫肆意爬取或者进行攻击等等情况,会做大量的反爬虫。伪装浏览器访问是反爬虫的一小步。

好了我们继续,

htmlcontet = requests.get(url, headers=headers, timeout=30)
htmlcontet.raise_for_status()
htmlcontet.encoding = 'utf-8'
return htmlcontet.text
复制代码

第一条如果我们看了Requests之后就知道这是一个解析你传入的url,并包含了请求头,响应延时

第二条,如果当前页面响应的情况会返回一个json数据包,我们通过这个语法来确认是否为我们要的成功响应的结果

第三条,解析格式,由于该网站我们可以看到已知字符编码格式为utf-8所以在这里我就写死了是utf-8

最后都没问题后,返回一个页面文件出来

###第二步:

拿到一个页面文件后,我们就需要观察一下该网页的HTML结构

这里介绍一下如何观察一个网页的结构,打开F12或者,找个空白的位置右键——>检查

我们大概会看到这样的一个情况:

没错你看到那些

这些就是HTML语言,我们爬虫就是要从这些标记里面抓取出我们所需要的内容。

我们现在要抓取这个1日夜间和2日白天的天气数据出来:

我们首先先从网页结构中找出他们的被包裹的逻辑

很清楚的能看到他们的HTML嵌套的逻辑是这样的:

我们要的内容都包裹在li里面,然后这里我们就要用BeautifulSoup里面的find方法来进行提取查询

我们继续构建一个抓取网页内容的函数,由于我们最终要的数据有两条,所有我先声明一个weather_list的数组来等会保存我要的结果。

代码如下:

同样的话不说第二遍,我们要写好注释。在声明完数组后,我们就可调用刚才封装好的请求函数来请求我们要的URL并返回一个页面文件,接下来就是用Beautifulsoup4里面的语法,用lxml来解析我们的网页文件。

你们可以用

soup = bs4.BeautifulSoup(html, 'lxml') print (soup)

就可以看到整个HTML结构出现在你眼前,接下来我就们就根据上面整理出来的标签结构来找到我们要的信息

content_ul = soup.find('div', class_='t').find_all('li')

具体方法,要熟读文档,我们找到所有的li后会返回一个这样的结构

这是一个数组的格式,然后我们遍历它,构造一个字典,我们对于的操作字典建立'day','temperature'键值对

最后输出

附上完整代码:

来源:Victor 278 链接: https://zhuanlan.zhihu.com/p/30632556

转载于:https://juejin.im/post/5b5ef4316fb9a04f8215192d

分分钟学会用Python爬取天气预报相关推荐

  1. python爬取天气预报_分分钟学会用Python爬取天气预报

    ###第一步: 请确保你已经安装了Requests和Beautifulsoup4的库,否则你可以打开CMD(命令提示符)然后输入 pip3 install requests pip3 install ...

  2. python爬取天气预报并发送短信_Python3爬虫教程之利用Python实现发送天气预报邮件...

    前言 此次的目标是爬取指定城市的天气预报信息,然后再用Python发送邮件到指定的邮箱. 下面话不多说了,来一起看看详细的实现过程吧 一.爬取天气预报 1.首先是爬取天气预报的信息,用的网站是中国天气 ...

  3. python爬取天气预报数据,并实现数据可视化

    文章目录 一.前言 二.爬取目标及结果展示 三.页面分析 四.完整代码 五.补充 六.不足(经读者反馈) 一.前言 在爬取数据时,有些数据,如图片.视频等等,爬到就是赚到:而有时候,我们爬到的可能只是 ...

  4. python爬取天气预报源代码_python抓取天气并分析 实例源码

    [实例简介] Python代码抓取获取天气预报信息源码讲解.这是一个用Python编写抓取天气预报的代码示例,用python写天气查询软件程序很简单.这段代码可以获取当地的天气和.任意城市的天气预报, ...

  5. 利用python爬取天气预报_python实现天气爬虫——利用xpath爬取七天天气预报数据...

    python实现天气爬虫--利用xpath爬取七天天气预报数据 import pandas as pd import lxml import requests import csv from lxml ...

  6. python爬取天气预报数据并保存为txt格式_今天分享一个用Python来爬取小说的小脚本!(附源码)...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章天气预报数据分析与统计之美 ,作者:❦大头雪糕❦ Python GUI制作小说下载器教学讲 ...

  7. python爬取天气预报用163邮箱发

    不BB,直接上代码,导完包,改完邮箱就能跑. import smtplib import pandas as pd import numpy as np import requests from lx ...

  8. python 开发安卓应用商店_用Python爬取各Android市场应用下载量(3分钟学会)

    就是这么简单! 文章目录 前言 设计一个函数 构造要爬取的网址 确定要爬取的内容的位置 构建输入和调用部分 程序完整代码 0 前言 有时候,总有一些重复又琐碎的工作,却不得不做-- 一个个统计,也不是 ...

  9. Python 爬取任意指定城市的天气预报,总共1万字❤️解决重要的“任意指定城市”的问题哦

    上一篇做了一个新闻类爬虫,积累了一些小经验.学到一点:在写文章时最好不要把网站名称和爬取到的新闻文本一起发来,可能会被CSDN下架的.这次准备好爬取天气预报网站,内容应该不像新闻类的可能涉及政治,但网 ...

最新文章

  1. Python多线程学习教程
  2. 制作模板_年会邀请函制作免费模板
  3. 7-8 InputMismatchException异常 (20 分)
  4. java模拟滑动事件_java - 以编程方式在Android视图中触发滑动动作事件 - SO中文参考 - www.soinside.com...
  5. java分支语句有哪些_Java代码多分支语句优化
  6. 8.Springcloud的Feign嵌入Ribbon实现接口式调用(改变restTemplate和Ribbon的调用方式)...
  7. Codeforces Round #324 (Div. 2) C. Marina and Vasya 贪心
  8. javascript编程知识点
  9. 写好一份属于自己的简历
  10. oracle创建用户密码和权限--ORA-65096 invalid common user or role name
  11. 如何用csdn上传资源
  12. pc构件生产线及设备_PC构件生产线全套设备清单
  13. estimate 和 estimation
  14. 你真正做到敏捷了吗?
  15. 上半年精选300篇Python文章,推荐你收藏~
  16. python 将函数封装成pyd或者so文件,调用该文件
  17. ZOJ 1598 Spherical Triangle
  18. 千兆以太网工程(高速接口)
  19. 苹果企业开发者账号申请记录
  20. BlockChain:2020年7月10日世界人工智能大会WAIC《链智未来 赋能产业区块链主题论坛》(二)

热门文章

  1. 离散数学 习题篇 —— 图的基本概念——连通分支数
  2. [欠驱动机器人]3,Acobot,Cart-pole和Quadrotors
  3. php加固包,PHP基础加固2——语法
  4. KMP算法--子串查找问题
  5. 计算机桌面便签 怎么弄,电脑桌面便签怎么设置?
  6. 龙腾15寸液晶屏M150GNN2 R1规格资料
  7. 构造原理中的独立性条件如果不满足,是否原结论仍然成立?试用模拟的方法验证你的结论。
  8. CSS文字超出部分省略号显示
  9. 开源 SPL 消灭数以万计的数据库中间表
  10. C语言:比较字符串,找出最大值