给我一个爬虫爬取天气网站代码,包括网络请求,html解析,数据清洗,数据存储进mysql数据库
时间: 2024-04-02 16:35:17 浏览: 80
好的,以下是一个简单的天气网站爬虫代码,包括网络请求,html解析,数据清洗,数据存储到MySQL数据库的完整过程,你可以参考一下:
```python
import requests
from bs4 import BeautifulSoup
import pymysql
# 请求URL
url = 'http://www.weather.com.cn/weather/101020100.shtml'
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)
response.encoding = 'utf-8'
html = response.text
# 解析HTML
soup = BeautifulSoup(html, 'html.parser')
conMidtab = soup.find('div', class_='conMidtab')
conMidtab2_list = conMidtab.find_all('div', class_='conMidtab2')
# 数据清洗
data = []
for conMidtab2 in conMidtab2_list:
tr_list = conMidtab2.find_all('tr')[2:]
for tr in tr_list:
temp = []
td_list = tr.find_all('td')
for td in td_list:
temp.append(td.getText().strip())
data.append(temp)
# 数据存储到MySQL数据库
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
password='123456',
database='test',
charset='utf8'
)
cursor = conn.cursor()
for item in data:
sql = f"INSERT INTO weather (date, weather, temperature, wind) VALUES ('{item[0]}', '{item[1]}', '{item[2]}', '{item[3]}')"
cursor.execute(sql)
conn.commit()
cursor.close()
conn.close()
```
这个爬虫的主要流程是:
- 发送网络请求,获取网页HTML源代码;
- 使用BeautifulSoup解析HTML,找到需要的天气信息;
- 对数据进行清洗,提取出每天的日期、天气状况、气温、风力风向;
- 将清洗后的数据存储到MySQL数据库中。
注意,这个代码中的数据库连接信息需要根据你自己的情况进行修改。同时,为了防止SQL注入攻击,我们应该使用参数化查询来替代字符串拼接。这里为了简化代码,没有使用参数化查询。如果在实际项目中使用,应该使用参数化查询来保证安全性。
阅读全文