爬虫思路——BS4(各地气温信息)

需求:

爬取中国天气网 所有城市对应的温度把数据保存到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标签内容就是需要的城市名

此外当爬取港澳台网页时,发现报错,是由于网页源代码标签不完整导致的。

结尾处 table结束标签缺失

小技巧:可以通过更改BeautifulSoup解析器,改为html5lib解析器,会自动将网页源代码中缺失的标签补齐

获取网页源代码:

匹配最小父级标签&匹配并列子级标签&定义子级内解析公式&遍历子级标签获取数据


翻页

涉及到的翻页技巧

1. 通过拼接url的方式,页码递增 range()

2. 可以设置一个url 列表,遍历列表内所有url 

保存CSV数据



完整部代码如下:

结果文档:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容