Python的学习笔记案例8--空气质量指数计算6.0

前面几节讲到网络爬虫,但是在分析数据时效率不高。

鉴于网页中HTML的树形结构,我们可以引入一个新的库--BeautifulSoup4用于解析HTML或XML。

如何安装第三方库:BeautifulSoup4?(我会新增一篇文章讲如何安装第三方库,此节不多说。)
1、默认是安装在Anaconda中
2、如果没有安装可以在命令窗口cmd中执行以下命令:
    pip install beautifulsoup4
    import bs4

使用BeautifulSoup库的步骤:
    1、创建BeautifulSoup对象
    2、查询节点
        find,找到第一个满足条件的节点
        find_all 找到所有满足条件的节点
    可按节点类型、属性或内容访问
    例如:有这样一段HTML:<a href='abcd' class='efgh'>a_value</a>
    按照类型查找节点:
    bs.find_all('a')
    按照属性查找节点:
    bs.find_all('a', href='abcd')
    bs.find_all('a', class_='efgh')
    注意:是class_   (因为:class是关键字)
    或者:bs.find_all('a', {'class': 'efgh')
    按照内容查找节点:
    bs.find_all('a', href='abcd', string='a_value')

可以查看网页的HTML代码(选中部分就是需要抓取的内容),右键鼠标--查看网页源代码:

那么就开始获取一个城市所有的AQI指标值:

"""
    作者:lanxingbudui
    日期:2020-02-25
    功能:AQI计算
    版本:6.0
"""

import requests
from bs4 import BeautifulSoup


def get_city_aqi(city_pinyin):
    """
        获取一个城市的所有AQI指标
    """
    url = 'http://pm25.in/' + city_pinyin
    r = requests.get(url, timeout=30)  #链接网页请求
    print(r.status_code)  #打印返回结果,200成功 400失败
    soup = BeautifulSoup(r.text, 'lxml')  #创建BeautifulSoup对象
    div_list = soup.find_all('div', {'class': 'span1'}) #查找所有spen1属性的节点
    # 或者 = soup.find_all('div', class_ = 'spanl')  # 不推荐这样写,因为class是关键字,有时容易忘记下划线。

    city_aqi = []
    for i in range(8):
        div_content = div_list[i]
        caption = div_content.find('div', {'class': 'caption'}).text.strip()        
        value = div_content.find('div', {'class': 'value'}).text.strip()
        # .text是获取属性值,并且.strip()移除上步骤中 text 字符串头尾的空格或换行符
        city_aqi.append((caption, value))
    return city_aqi


def main():
    """
        主函数
    """
    city_pinyin = input('请输入城市拼音:')
    city_aqi = get_city_aqi(city_pinyin)
    print(city_aqi)


if __name__ == '__main__':
    main()

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值