爬取各城市的天气 - BeautifulSoup - python

本文介绍如何利用BeautifulSoup库来爬取不同城市的天气信息,数据来源于http://www.weather.com.cn/textFC/hb.shtml。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

爬取各城市的天气

参考的数据来源:http://www.weather.com.cn/textFC/hb.shtml

一、BeautifulSoup

这个方法最简单

import requests
import csv
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36'
}
class  WeatherSpider():
    def __init__(self):
        self.start = 0
        
    def getSource(self,page):
        url = 'http://www.weather.com.cn/textFC/'+page+'.shtml'
        wb_data = requests.get(url,headers=headers).content.decode('utf-8')
        return wb_data
    
    def parseSource(self,page):
        soup = BeautifulSoup(self.getSource(page),'lxml')
        com = soup.find_all('div',class_="conMidtab")[1]   # 1代表的是明天。0~6可以选择7天的天气
        tables = com.find_all('table')
        onerows = []
        for t
### 回答1: Python是一种优秀的编程语言,具有众多应用场景,其中之一就是爬虫。爬虫是指通过编写代码来从互联网上获取数据,比如爬取一个固定城市天气数据。 实现这个过程需要以下几个步骤: 1. 导入相应的库和模块,比如requests、beautifulsoup4等。这些库可以实现从网页上抓取数据和解析HTML等操作。 2. 从目标网站抓取数据。可以利用requests库的get()方法向目标网站发送请求,并返回响应对象。 3. 解析HTML。使用beautifulsoup4等库对返回的HTML源代码进行解析,获取所需的数据,比如城市的名称、温度、风速等。 4. 存储数据。将获取到的数据存储在csv、txt或者数据库中,以便后续分析和使用。 具体实现方式如下: ```python import requests from bs4 import BeautifulSoup # 请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} # 目标网页 url = 'http://www.weather.com.cn/weather/101010100.shtml' # 从目标网站抓取数据 res = requests.get(url, headers=headers) res.encoding = 'utf-8' # 解析HTML源代码 soup = BeautifulSoup(res.text, 'html.parser') # 找到城市名称 city = soup.select('.crumbs.fl a')[2].text # 找到温度数据 temperature = soup.select('.tem i')[0].text # 找到风速数据 wind_speed = soup.select('.win i')[1].text # 打印数据 print('城市:{}'.format(city)) print('温度:{}'.format(temperature)) print('风速:{}'.format(wind_speed)) ``` 通过以上代码实现了爬取北京市天气的功能。根据不同城市的代码,只需修改url即可获取其他城市天气数据。 ### 回答2: Python爬虫是一种利用编程语言Python的自动化技术,可以获取特定网页中的数据并将其存储在本地文件中。固定城市天气是比较复杂的数据,我们可以借助Python技术实现爬取。具体步骤如下: 1. 确定爬取网站:选择一个能够获取天气数据的网站,例如中国天气网、天气通等。 2. 获取网站数据:使用Python的requests库,发送GET请求获取天气网站的HTML数据。 3. 解析网站数据:使用PythonBeautifulSoup库解析HTML数据,并提取需要的天气数据。 4. 存储天气数据:使用Python的CSV库,将天气数据存储到本地文件中。 5. 实现自动化爬取:使用Python的定时调度库(如APScheduler),实现自动定时爬取固定城市天气数据,并在指定邮箱进行邮件提醒。 Python爬虫技术可以使我们更方便地获取需要的数据,更便于分析和利用。需要注意的是,在使用Python爬虫过程中应该尊重网站的规定,避免爬取产生恶意行为,以免造成不必要的麻烦。 ### 回答3: Python可以通过爬虫技术来获取指定城市天气信息。首先,需要了解目标网站的数据结构和页面布局。以中国气象网为例,可以通过网址和城市代码来获取对应城市天气信息。 首先,引入必要的库:requests和beautifulsoup4,分别用于获取网页内容和解析HTML文档。 ```python import requests from bs4 import BeautifulSoup ``` 然后,定义目标城市的代码和目标网址。以北京为例,北京的城市代码为101010100,对应的网址为http://www.weather.com.cn/weather/101010100.shtml。 ```python city_code = '101010100' url = f'http://www.weather.com.cn/weather/{city_code}.shtml' ``` 接着,获取网页内容,并解析HTML文档。 ```python response = requests.get(url) response.encoding = 'utf-8' soup = BeautifulSoup(response.text, 'html.parser') ``` 在HTML文档中,可以通过标签和属性来定位目标元素。例如,获取当前天气情况: ```python weather = soup.select_one('div.t > ul > li > p.wea').string print('天气:', weather) ``` 其中,`div.t > ul > li > p.wea`表示根据CSS选择器语法,定位到class为t的div标签下的ul标签的第一个li标签的p标签,并获取其中的文本内容。 类似地,可以获取其他天气信息并输出: ```python temperature = soup.select_one('div.t > ul > li > p.tem > span').string.rstrip('℃') humidity = soup.select_one('div.t > ul > li.hum > p > span').string wind_direction = soup.select_one('div.t > ul > li.win > p > em > span').string wind_speed = soup.select_one('div.t > ul > li.win > p > i').string print('气温:', temperature, '℃') print('湿度:', humidity) print('风向:', wind_direction) print('风速:', wind_speed) ``` 综上所述,使用Python爬取固定城市天气,需要了解目标网站的数据结构和页面布局,然后通过爬虫技术获取数据并解析HTML文档,最后根据目标元素的标签和属性定位到目标信息并输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洋芋本人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值