1. 首页
  2. 编程学习

[干货]Python爬虫-爬取各个地区的天气.

大家好,我是傲天


好,开始正题,开始我们的爬虫!

首先配上效果图

效果

OK,先说一下我的运行环境

  • Windows7
  • Python3.6

接下来是依赖库

  • BeautifulSoup
  • requests
  • pinyin

进入正题贴代码

import requests
import pinyin
from bs4 import BeautifulSoup
from os import system
class Get_url_weather(object):
    #实现请求一个天气的URL,并对数据进行解析
    def __init__(self, url, timeout=2):
        #    请扔进来一个url,还有一个超时查询默认为2秒吧
        self.r = requests.get(url, timeout=timeout)
        if self.r.status_code == 404:
            print("出现错误,请检查输入是否正确,如若多次输入不正确,说明该程序无法查询到你地址的天气")
    def get(self):
        soup = self.get_soup()
        #因为我们想要的信息都在一个dl里,class="weather_info"
        html = self.get_dl_weather_ifno(soup)
        a = []
        a.append("标头:{}".format(html.img["alt"]))
        a.append("地区:{}".format(html.dd.h2.text))
        a.append("{}".format(html.find("dd", class_="kongqi").h6.text))
        a.append("{}".format(html.find("dd", class_="kongqi").span.text)[:9])
        a.append("{}".format(html.find("dd", class_="kongqi").span.text)[9:])
        a.append("{}".format(html.find("dd", class_="shidu").b.text))
        a.append("{}".format(html.find("dd", class_="shidu").find_all("b")[1].text))
        a.append("{}".format(html.find("dd", class_="shidu").find_all("b")[2].text))
        a.append("{}".format(html.find("dd", class_="kongqi").h5.text))
        a.append("当前时间:{}".format(html.find("dd", class_="week").text))
        a.append("当前天气:{}".format(html.find("span").b.text))
        a.append("全天温度:{}".format(html.find("span").text))
        return a
    def get_soup(self):
        return(BeautifulSoup(self.r.text, "html.parser"))
    def get_dl_weather_ifno(self, soup):
        return (soup.find("dl", attrs={'class':'weather_info'}))
if __name__ == "__main__":
    URL = "http://www.tianqi.com/"
    url_path = pinyin.get(input("请输入地区名(不需要带市或省):"), format="strip")
    URL = URL+url_path
    Data = Get_url_weather(URL)
    data = Data.get()
    print('\n'.join(data))
    system("pause")
    #print(str(pinyin.get("你好", format="strip")))

需要学习爬虫的 交流群:62851737

原创文章,作者:Y4er,未经授权禁止转载!如若转载,请联系作者:Y4er

联系我们

在线咨询:点击这里给我发消息

QR code