scrapy作为一个爬虫框架,其功能是足够强大的。
这一框架就像一条爬虫流水线,有工作队列、有下载器、有分配任务的引擎,有对爬取数据写逻辑的地方、也有写保存处理数据的数据库SQL的地方。对于scrapy而言,更多的时候是在配置scrapy。先要继承一个spider写爬虫的主体,然后还要在setting里写配置,在pipeline里写数据库。而且还要注意在主函数parse里的返回值,返回item时是交给pipline做数据处理,返回Request回调函数时是向爬取队列注册二级链接等等。这样看scrapy使用时比requests要繁琐很多,后者只需要调用一下requests类,然后配置一下成员变量就可以使用,但获取到html后其他的事情就都得你自己处理,自己写的代码还不是最好的。而scrapy在配置好后就可以很顺畅的跑起来,还会自动处理很多东西,而且往往效率比自己造的轮子效率高。所以如果是写个小爬虫,用request就可以了,如果代码量级稍大一点,不想费心管理了,就可以用scrapy,当然也可以自己造轮子
直接上教程:
python 3.5,Windows7环境下
这是爬取百度知道的问题列表题目,然后写入txt中。
新建项目:
scrapy startproject textsc
然后在spider文件夹下新建BaiSpider.py文件
下面来简单介绍一下各个文件的作用:
scrapy.cfg:项目的配置文件
textsc/:项目的Python模块,将会从这里引用代码
textsc/items.py:项目的items文件(用于爬取数据定义和实例化)
textsc/pipelines.py:项目的pipelines文件,主要用于存写数据(写入数据库等)
textsc/settings.py:项目的设置文件
textsc/spiders/:存储爬虫的目录(爬虫的内容,如何爬虫,取那些数据等)1.items.py
其中红色部分需要注意,TextscItem类名用于导入spiders中引用
TitleName = scrapy.Field()自定义数据2.BaiSpider.py
start_urls:可以设置多个url链接
from textsc.items import TextscItem:导入items.py里面的TextscItem类
item=TextscItem():实例化
item[‘TitleName’] = items:赋值
yield item:这个关键,如果没有这个,item不会传递到pipelines.py里。用return item也行3.pipelines.py
注释“Don’t……’”需要自行设置settings.py文件
第二个红色框为自行编写的代码。open模式为a,这样可以连续写入两个url的数据,如果用w,只能写入最后一个url的数据。4.settings.py
运行结果:
代码下载