需求:
爬取中国天气网 所有城市对应的温度把数据保存到csv当中
步骤:
拆解需求:
需要用到的模块发起网页请求
import requests
使用BS4 解析网页,获取所需数据
from bs4 import BeautifulSoup
保存数据进CSV
import csv
结果列表格式预设:result_lst = [{'地区1': XXX, '温度': XXX}, {'地区2': XXX, '温度': XXX}, {'地区3': XXX, '温度': XXX},...,{'地区N': XXX, '温度': XXX}]
可以使用csv中,Dictwriter方法直接将字典保存进入csv文件
分析页面
此处选三个作为爬取示例
URL查看
华北 url: http://www.weather.com.cn/textFC/hb.shtml
...
华中 url : http://www.weather.com.cn/textFC/hz.shtml
港澳台 url : http://www.weather.com.cn/textFC/gat.shtml
可以先对华北地区进行分析
网页源代码中检查是否存在需要爬去的内容
在element中定位需要爬取内容标签
标签规律归纳
归纳:
小技巧:此处需要对同名tr的标签做不同的操作 (enumerate)
可以使用 enumerate,同时返回列表元素index 以及该index对应列表元素
然后对index加以条件判断
每个table标签下,第一和第二个tr都是表头,不需要
第三个tr下,第一个td标签是省/直辖市名称,第二个td标签内容才是需要的第一个城市名
之后所有的tr, 均是第一个td标签内容就是需要的城市名
此外当爬取港澳台网页时,发现报错,是由于网页源代码标签不完整导致的。
小技巧:可以通过更改BeautifulSoup解析器,改为html5lib解析器,会自动将网页源代码中缺失的标签补齐
获取网页源代码:
匹配最小父级标签&匹配并列子级标签&定义子级内解析公式&遍历子级标签获取数据
翻页
涉及到的翻页技巧
1. 通过拼接url的方式,页码递增 range()
2. 可以设置一个url 列表,遍历列表内所有url