爬虫 Scrapy简单使用
Scrapy是用于抓取网站并提取结构化数据的应用程序框架。
本文将以一个简单的scrapy项目,爬取http://www.tianqi.com 上的北京的天气信息
本文仅为学习笔记,欢迎指出错误和交流
第一步 创建工程
scrapy startproject weather
之后查看一下weather工程的结构
上面的文件结构就是scrapy工程的基本结构,其中:
- scrapy.cfg: 项目的配置文件
- weather/: 该项目的 python 模块。之后您将在此加入代码。
- weather/items.py: 项目中的 item 文件。
- weather/pipelines.py: 项目中的 pipelines 文件。
- weather/settings.py: 项目的设置文件。
- weather/spiders/: 放置 spider 代码的目录。
第二步 修改items.py
根据该网站上的内容
我们要爬取的内容是 天气,星期,温度,风速,显示天气的图片。
所以在items.py中这样写:
在这里没有太多的应用,只要使用 scrapy.Field() 即可。在网页中你抓取的数据被储存在类似字典的结构传递,而 上例的 weather=scrapy.Field()其实 就像当于对字典添加key。
以上代码就相当于得到了一个
item = {'weather':None,"week":None,"temperature":None,"wind":None,"imgurl":None}
第三步 在shell上打开网址,在这上面利用 css/xpath 搜索你所需要的内容,得到正确的选择步骤
scrapy shell "http://beijing.tianqi.com"
运行结果为(得到一个长长的东西,图片仅为一部分)
上面的 response 后为 200,所以成功打开网页
html 代码如图所
使用css/xpath如下:
通过以上步骤,完成了准备就可以开始写spider了。
第四步
scrapy genspider beijngtianqiSpider beijing.tianqi.com #scrapy genspider spider的名字 搜索域
之后写其内容
第五步
写pipelines.py
它的作用就是对抓取的数据进行处理,想怎样处理都可以,然后保存在文件中或者储存在数据库上
由于修改了pipelines.py,所以需要对setting.py进行修改:
假如修改一些其他设置也可以在此处:
如修改User-agent,
以上的内容就是对scrapy的初步应用,scrapy就像是填空题,填上对应的东西就可以完成爬虫