方法一
"""
需求:
1.爬取全国所有的城市名称以及对应的气温
2.保存所有的城市名称以及对应的气温到为csv文件
目标url:
1.华北地区:http://www.weather.com.cn/textFC/hb.shtml
2.东北地区:http://www.weather.com.cn/textFC/db.shtml
3.华东地区:http://www.weather.com.cn/textFC/hd.shtml
4.华中地区:http://www.weather.com.cn/textFC/hz.shtml
5.华南地区:http://www.weather.com.cn/textFC/hn.shtml
6.西北地区:http://www.weather.com.cn/textFC/xb.shtml
7.西南地区:http://www.weather.com.cn/textFC/xn.shtml
8.港澳台地区:http://www.weather.com.cn/textFC/gat.shtml
规律: 'http://www.weather.com.cn/textFC/' + dq_name + '.shtml' 其中,dq_name = [hb,db,hd,hz,hn,xb,xn,gat]
"""
# #2. 获取网页源代码
import requests
def get_source(url):
response=requests.get(url)
response.encoding='utf-8'
return response.text
# 3.分析天气爬取规律
from bs4 import BeautifulSoup
def get_info(source):
# 解决网页乱码,添加'html5lib',而不是lxml
soup = BeautifulSoup(source, 'html5lib') # pip install html5lib
# 1.进入整体表格
conMidtab = soup.find('div', class_='conMidtab')
# 2.进入子表格
tables = conMidtab.find_all('table')
# 3.进入每个子表格收集天气信息
info = []
for table in tables:
# (1)过滤前两个(城市和时间)
trs = table.find_all('tr')[2:] # tr存储了每个城市的天气信息
# enumerate 返回2个值第一个是下标 第二个下标所对应的元素
# (2)进入每个城市(每一行)ÿ