Python爬取天气信息

简单的练手实例,所以进化一下,用面向对象,和输入一个城市查那个城市的七日信息
在这里插入图片描述
在这里插入图片描述

import sys
import requests
from bs4 import BeautifulSoup
from pypinyin import lazy_pinyin
from requests.exceptions import RequestException
from lxml import etree
import csv

def myInput():
    city = input('请输入你想要查询天气的城市:')
	#city = sys.stdin.readline()
    pinyin_city = lazy_pinyin(city)
    return pinyin_city[0] + pinyin_city[1]

class TianQiSpider:
    """docstring for TianQiSpider"""

    def __init__(self, name):
        self.name = name
        self.url = 'http://www.tianqi.com/' + name + '/'
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                          'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
        }

    def get_html(self):
        try:
            response = requests.get(self.url, headers=self.headers)
            if response.status_code == requests.codes.OK:
                return response.text
            else:
                return None
        except RequestException:
            return None

    def get_info(self, html):
        fp = open('D:/一周天气爬取.csv', 'wt', newline='', encoding='UTF-8')
        writer = csv.writer(fp)
        writer.writerow(['日期', '星期几', '天气', '温度区间', '吹啥风'])
        soup = BeautifulSoup(html, 'lxml')
        selector = etree.HTML(html)
        days = soup.select('div.day7 > ul.week > li > b')
        xingqijis = soup.select('div.day7 > ul.week > li > span')
        tianqis = selector.xpath('//div[@class="day7"]/ul[2]/li/text()')
        temp_froms = selector.xpath('//div[@class="zxt_shuju"]/ul/li/b/text()')
        temp_tos = selector.xpath(
            '//div[@class="zxt_shuju"]/ul/li/span/text()')
        winds = selector.xpath('//ul[@class="txt"]/li/text()')
        for day, xingqiji, tianqi, temp_from, temp_to, wind in zip(days, xingqijis, tianqis, temp_froms, temp_tos, winds):
            日期 = day.get_text()
            星期几 = xingqiji.get_text()
            天气 = tianqi
            温度区间 = temp_from + '~' + temp_to
            风 = wind
            writer.writerow([日期, 星期几, 天气, 温度区间,])
        fp.close()

    def run(self):
        html = self.get_html()
        self.get_info(html)

if __name__ == '__main__':
    city = myInput()
    tianqi_spider = TianQiSpider(city)
    tianqi_spider.run()

Result
在这里插入图片描述

要使用Python爬取天气信息,可以使用第三方库如requests和BeautifulSoup来获取和解析网页内容。首先,使用requests库发送HTTP请求获取网页的HTML代码。然后,使用BeautifulSoup库对HTML代码进行解析,提取所需的天气信息。 引用中提到了使用requests和BeautifulSoup来爬取网页数据的示例代码。在该示例中,使用了`requests.get()`方法获取网页内容,然后使用BeautifulSoup来解析HTML代码并提取所需的天气信息。 引用中提到了一个HtmlParser类,它使用BeautifulSoup来解析给定的HTML代码,并从中提取天气信息。在该示例中,使用了`find()`和`find_all()`方法来查找指定的HTML元素,并使用`.string`属性获取元素的文本内容。 引用中还提到了一个DataStorage类,它使用pandas库来存储天气数据。在该示例中,使用了`DataFrame()`方法创建一个数据框,并使用`.to_csv()`方法将数据保存到CSV文件中。 综上所述,要使用Python爬取天气信息,需要使用requests库发送HTTP请求获取网页内容,然后使用BeautifulSoup来解析HTML代码并提取所需的信息,最后使用pandas库将数据存储到文件中。根据引用和引用中的示例代码,你可以参考这些示例来实现你的爬取天气信息的代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python爬取天气数据,并且进行天气预报(已实现)](https://blog.csdn.net/qq_50847752/article/details/127884116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【Python】实现爬虫(完整版),爬取天气数据并进行可视化分析](https://blog.csdn.net/chandfy/article/details/125153243)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值