目的
写一个真正意义上一个爬虫,并将他爬取到的数据分别保存到文本文件,JSON,已经存在的MySQL的数据库中。
目标分析:
这次我们要爬的是中国天气网:http://www.weather.com.cn/
随便点开一个城市的天气比如合肥:http://www.weather.com.cn/weather/101220101.shtml
我们要爬取的就是图中的:合肥七天的前期预报:
数据的筛选:
我们使用铬开发者工具,模拟鼠标定位到相对应位置:
可以看到我们需要的数据,全都包裹在
<ul class = “t clearfix” >
里
我们用BS4,XPath的,CSS之类的选择器定位到这里,再筛选数据就行。
本着学习新知识的原则,文中的代码将会使用XPath的定位。
这里我们可以这样:
响应.xpath('// ul [@ class =“t clearfix”]')
Scrapy框架的实施:
- 创建scrapy项目和爬虫:
$ scrapy startproject天气
$ cd天气
$ scrapy genspider HFtianqi www.weather.com.cn/weather/ 101220101 .shtml
这样我们就已经将准备工作做完了。
看一下当前的目录:
。
├── scrapy .CFG
└── 天气
├──__ init__ 的.py
├──__ pycache__
│├──__ init__ .cpython-36 .pyc文件
│└── 设置.cpython-36 .pyc文件
├── 项目。 PY
├── 中间件的.py
├── 管道的.py
├── 设置的.py
└── 蜘蛛
├── HFtianqi 的.py
├──__ init__ 的.py
└──__ pycache__
└──__init__ .cpython-36 .pyc
4个目录,11个文件
2.关系编写items.py:
这次我们来先编写项目,十分的简单,只需要将希望获取的字段名填写进去:
进口 scrapy
类WeatherItem(scrapy。项目):
#在这里定义项目的字段,如:
#name = scrapy。场()
date = scrapy。场()
温度= scrapy。场()
天气= sc