这个和用不用python没啥关系,是数据来源的问题。调用 *** API,使用 api相关接口获得你想要的内容,我 记得api中有相关的接口,你可以看一下接口的说明。用python做爬虫来进行页面数据的获取。希望能帮到你。
再写个发邮件模块,根据爬取的天气内容判断,提醒用户是否需要带伞,适合穿什么衣服出门!
bs4是可以提取的,因为你这一段里面出现的文字都是你要的,不存在剔除的考虑。
网页解析:要么使用bs4、要么使用bs4+re(正则),或者你可以使用以下PyQuery,这个也是用在网页爬虫解析页面的模块。
如果还是琢磨不出来,你把你这整个的html源码发上来,我搞搞,现在只看一段很难帮你
哪个城市最热?
现如今,我大天朝举国上下都处于一种高温的状态。那么这里我们也来蹭一蹭热度,来写个小爬虫,看看全国哪个城市最热。东西虽然小,但是比起那些所谓“高大上”的教程来说,这篇文章比较脚踏实地,不玩虚的,你看完后一定可以学会的。
准备工作:
在做爬虫之前,首先对爬虫的解题路径做个简单概述。一个爬虫工作分为两步骤:
之一步:把你需要爬取的那个网页的数据全部拉下来。
第二步是把从网站上拉下来的数据进行过滤,把你需要的提取出来,把不需要的给过滤掉。这就是爬虫的工作原理。
我们要爬取的网站数据不是特别大,复杂度也不高。因此为降低大家学习爬虫的难度。我们不上那些很复杂的框架,比如Scrapy,而是直接使用一个简单又好用的第三方库帮我们完成爬虫任务,那就是requests库。requests库是一个专门用来从网站上拉取数据的库,也就对应了我们爬虫工作的之一步——从网站上拉取数据。这个库的使用,后面我们会讲到,如果您还没有安装这个库,那么可以通过以下命令进行安装:pip install requests。如果您使用的是Linux或者Mac OS系统,那么更好在前面加上一个sudo pip install requests,不然很容易会因为权限问题而安装失败。
在使用requests库把数据拉取下来以后,接下来的工作就是对这些数据进行分析和过滤了。这时候我们使用的一个第三方库是beautifulsoup4。这个库是专门用来解析网页数据的。并且为了使接下效率更高,一般我们推荐使用lxml来作为解析的引擎。因此,要使用beautifulsoup库,要通过以下命令来安装:
# 安装 lxmlpip install lxml# 安装 beautifulsoup4pip install bs4
中国天气网分析:
这里我们需要爬取的网站是:中国天气网her.com.cn/textFC/hb.shtml#。我们做任何爬虫之前,都需要对这个网站进行详细的分析,一定要达到了如指掌的境地。不然后面很容易在数据过滤的时候会出现一个问题,这也是所有做爬虫需要注意的地方。我们这里就跟大家分析一下中国天气网的网站:
在以上这个中国天气网的页面中。我们可以看到,他是通过区域的方式把全国个大省份和城市进行区分的,有:华北、东北、华东、华中、华南、西北、西南、港澳台。在每个区域下面,都是通过表格的形式把属于该区域下的所有省份以及城市的天气信息列出来。因此我们要做的是,首先找到所有的区域的链接,然后再在每个区域的链接下把这个区域下的所有的城市天气信息爬出来就可以了。
我们已经知道只要拿到了所有的区域链接,就可以在这个链接的网页中把这些城市拿到。那么如何去拿到这个区域下对应的所有城市以及他们对应的天气信息呢?这时候就需要去解析源代码了,我们点击这个页面任何一个地方,然后右键点击审查元素,打开控制台后,去寻找规则(因为这个寻找规则比较繁琐,这里就做个简单概述,如果对如何去找到相应的元素感兴趣,可以关注本公众号,会有一套详细的视频教程免费教大家查找)。我们可以看到,一个省份的城市及其天气信息,都是放在一个叫做div class='d662-999b-20c4-8a34 conMidtab2'的盒子中。因此我们只要找到所有的conMidtab2盒子,就找到了所有的城市。但是这个地方需要注意的是,因为在一个页面中,展示了 7 天的数据,因此如果你按照class='999b-20c4-8a34-3b47 conMidtab2'这个规则去寻找的话,会得到从今天往后延 7 天的所有数据。这时候我们就要换一个规则了,我们经过分析(具体分析过程可以看本教程视频内容)发现一天的天气信息,是放在一个class='20c4-8a34-3b47-3519 conMidtab'的这样一个盒子中。因此我们只要把之一个conMidtab盒子拿到,就可以拿到今天的天气数据而把其他日期的数据给过滤掉。这里要给大家上一份源代码了:
# find *** ,只会返回之一个满足条件的元素,也即只把之一个 conMidtab 返 *** 来,把今天的数据返 *** 来conMidtab = soup.find('div', class_='conMidtab')# 通过得到的这个 conMidtab,我们再调用 find_all *** ,把这个 conMidtab 元素下的所有 conMidtab2 盒子找到,得到这一天中这个区域下所有的城市conMidtab2_list = conMidtab.find_all('div', class_='conMidtab2')
也上一份图片给大家分析一下:
我们已经分析好了如何获取城市的盒子,那么接下来就是去获取城市的天气信息了。我们继续分析(具体分析过程可以看本视频教程)后发现,在table中,前面两个tr是表头,知识用来解释数据的,我们不需要,那么真正有用的数据是从第三个tr开始的。并且第三个tr的第 1 个td展示的是该省或者直辖市的名称,从第二个td开始才是真正展示该省份下这个城市的详细天气情况了,这里上一张图片分析一下:
并且,从第四个tr开始,下面的td全部展示的就是这个城市的信息了,而不包括省份的信息了,这里也用一张图片来说明这个问题:
所以综合以上的分析,我们就知道,省份名称是存储在table下的第三个tr下的第 0 个td下,而城市名字则要进行判断,如果是第三个tr,那么就是在第二个td,如果是从第四个开始,那么就是存储在第 0 个td下。而更高气温也要区分,第三个tr,存储在第 5 个td下,从第四个tr开始,则存储在第 4 个td下,那么我们也可以上一份源代码,看看如何获取的:
conMidtab = soup.find('div', class_='conMidtab')
conMidtab2_list = conMidtab.find_all('div', class_='conMidtab2')for x in conMidtab2_list:
tr_list = x.find_all('tr')[2:]
province = ''
for index, tr in enumerate(tr_list):
# 如果是第 0 个 tr 标签,那么城市名和省份名是放在一起的 min = 0
if index == 0:
td_list = tr.find_all('td')
province = td_list[0].text.replace('\n', '')
city = td_list[1].text.replace('\n', '') max = td_list[5].text.replace('\n', '') else:
# 如果不是第 0 个 tr 标签,那么在这个 tr 标签中只存放城市名
td_list = tr.find_all('td')
city = td_list[0].text.replace('\n', '') max = td_list[4].text.replace('\n', '')
TEMPERATURE_LIST.append({ 'city': province+city, 'min': min
})
数据显示:
如果把所有数据都爬下来后,那么我们可以使用echarts-python把数据进行可视化,这部分内容比较简单,我就直接把我做的可视化的数据图给大家看下,具体的实现方式,大家可以观看我的视频教程,讲解非常详细:
写在最后:
研究人员近日发现了针对乌克兰计算机的新型擦除恶意软件(以破坏关键文件和数据为目的),这是俄乌冲突以来发现的第 3 款擦除恶意软件。 这种被称为 CaddyWiper 的恶意软件是由总部位于斯洛伐克的网络安全公司 ESET 的研究人员发现的,他们在周一发布的推文中分享了细节。 据研究人员称,该...
近日名为 Nimbuspwn 的漏洞组合被曝光,可以让本地攻击者在 Linux 系统上提升权限,部署从后门到勒索软件等恶意软件。微软的安全研究人员在今天的一份报告中披露了这些问题,并指出它们可以被串联起来,在一个脆弱的系统上获得 root 权限。 Nimbuspwn 存在于 networkd-dis...
黑莓威胁情报(BlackBerry Threat Intelligence)团队刚刚发出警报 —— 一款自 2021 年 8 月存续至今的 LokiLocker 勒索软件,正在互联网上传播肆虐。据悉,该恶意软件采用了 AES + RSA 的加密方案,若用户拒绝在指定期限内支付赎金,它就会擦除其 PC...
上周,Chrome Security 团队的 Adrian Taylor,在一篇谷歌安全博客文章中解释了“为何在野外被利用的 CVE 漏洞似乎有所增加”。对于这种漏洞利用的可见性增长趋势,归咎于多个方面的因素。而谷歌旗下的 Project Zero 团队,也有对包括 WebKit、IE、Flash、...
虽然这家俄罗斯安全公司近几个月来已经失宠,但卡巴斯基宣布它已经成功破解了Yanluowang勒索软件(没错,它真的叫阎罗王,字面上Yanluowang。)这一充满了东方文化气息的恶意软件是去年由赛门铁克公司首次发现的,现在,卡巴斯基已经发现了它使用的加密算法中的一个漏洞。这使得该公司能够开发一个免费...
根据The Hacker News的报道,有三个高影响的统一可扩展固件接口(UEFI)安全漏洞被公布,即CVE-2021-3970、CVE-2021-3971和CVE-2021-3972,已被发现它们会影响联想的各种设备,如联想Flex、IdeaPads和Yoga笔记本电脑。 最初,CVE-202...