用pandas库爬取http://www.weather.com.cn/textFC/hb.shtml并存入excle文件
时间: 2023-12-22 18:06:36 浏览: 191
这是一个需要使用爬虫技术的任务。以下是一个示例代码,可以使用pandas库和requests库实现:
```python
import requests
import pandas as pd
url = 'http://www.weather.com.cn/textFC/hb.shtml'
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text
table = pd.read_html(html, header=0)[0]
table.to_excel('weather.xlsx', index=False)
```
这段代码首先使用requests库获取网页的html代码,然后使用pandas的read_html函数将表格数据解析成DataFrame格式,最后将DataFrame保存到excle文件中。请注意,由于网页的编码方式可能不同,需要根据具体情况设置encoding属性。
相关问题
爬取https://top.zol.com.cn/compositor/16/notebook.html和https://top.zol.com.cn/compositor/16/manu_attention.html 需要爬取名称,品牌,价格,评分
好的,以下是Python代码,需要安装requests、beautifulsoup4和pandas库:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 爬取第一个网页
url1 = "https://top.zol.com.cn/compositor/16/notebook.html"
resp1 = requests.get(url1)
soup1 = BeautifulSoup(resp1.text, "html.parser")
items1 = soup1.find_all("div", class_="list-item")
# 爬取第二个网页
url2 = "https://top.zol.com.cn/compositor/16/manu_attention.html"
resp2 = requests.get(url2)
soup2 = BeautifulSoup(resp2.text, "html.parser")
items2 = soup2.find_all("div", class_="list-item")
# 保存数据到Excel文件
data = []
for item in items1 + items2:
name = item.find("h3").text.strip()
brand = item.find("span", class_="item-brand").text.strip()
price = item.find("b").text.strip()
score = item.find("em").text.strip()
data.append([name, brand, price, score])
df = pd.DataFrame(data, columns=["名称", "品牌", "价格", "评分"])
df.to_excel("data.xlsx", index=False)
print("数据已保存到data.xlsx文件")
```
以上代码会将爬取的数据保存到当前目录下的data.xlsx文件中,你可以根据自己的需求修改保存的文件名和路径。
爬虫爬取http://www.weather.com.cn/weather40dn/101250804.shtml网站40天天气数据的代码,代码包括网络请求,html解析,数据清洗,数据以excel表格存储至本地,并且代码注释清晰
好的,以下是Python代码实现:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 网络请求,获取网页内容
def get_html(url):
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'}
response = requests.get(url, headers=headers)
if response.status_code == 200:
response.encoding = 'utf-8' # 防止中文乱码
return response.text
else:
return None
# 获取天气数据
def get_weather_data(html):
soup = BeautifulSoup(html, 'html.parser')
weather_data = [] # 存储天气数据
days = soup.find('ul', class_='t clearfix').find_all('li')
for day in days:
# 日期
date = day.find('h1').string
# 天气情况
weather = day.find_all('p')
# 温度
temperature = weather[0].string.strip()
# 风力
wind = weather[1].string.strip()
# 将数据存入列表中
weather_data.append({'日期': date, '天气': weather[0].string, '温度': temperature, '风力': wind})
return weather_data
# 数据清洗
def data_cleaning(weather_data):
for data in weather_data:
# 温度
temperature = data['温度']
temperature_range = temperature.split('℃/')
high_temperature = temperature_range[0]
low_temperature = temperature_range[1].replace('℃', '')
data['最高温度'] = high_temperature
data['最低温度'] = low_temperature
del data['温度']
# 风力
wind = data['风力']
wind_direction = wind.split(' ')[0]
wind_power = wind.split(' ')[1]
data['风向'] = wind_direction
data['风力等级'] = wind_power
del data['风力']
return weather_data
# 数据保存至Excel表格
def save_to_excel(weather_data):
# 创建DataFrame
df = pd.DataFrame(weather_data)
# 按日期排序
df = df.sort_values(by='日期')
# 保存到Excel文件中
writer = pd.ExcelWriter('weather_data.xlsx')
df.to_excel(writer, index=False)
writer.save()
if __name__ == '__main__':
url = 'http://www.weather.com.cn/weather40dn/101250804.shtml'
html = get_html(url)
if html:
weather_data = get_weather_data(html)
weather_data = data_cleaning(weather_data)
save_to_excel(weather_data)
print('数据已保存至本地!')
else:
print('网络请求失败!')
```
代码注释比较详细,主要分为四个部分:
1. 网络请求:使用requests库发送网络请求,获取网页内容。
2. 获取天气数据:使用BeautifulSoup库解析HTML文档,获取天气数据。
3. 数据清洗:对获取的天气数据进行清洗,包括温度和风力的处理。
4. 数据保存至Excel表格:使用pandas库将数据保存至本地Excel文件中。
阅读全文