这几天一直都在学 Scrapy,反正觉得它是很有用的,至少比以前独立写爬虫的时候写的代码量少多了。
安装
Scrapy 不适用于 Python 3.x 以上,所以还是得用 Python 2.x,安装如下:
1 | $ pip install scrapy |
记得把 Python2x/Scripts 路径加入环境变量
第一个 Project
1 | $ scrrapy startproject hrtencent |
名字自取,一般取和爬取的站点相同的名字,上面那个就是 http://hr.tencent.com/position.php。
目录树
hrtencent/ scrapy.cfg hrtencent/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py ...
首先是 items.py
,它将保存爬下来的数据。
1 | from scrapy.item import Item, Field |
当然可以定义多个 Item,用于处理不同种类的数据
接下来创建 HRTencentSpider.py
在 spiders/
1 | import scrapy |
保存文件为 json 用的,这是我的做法,pipelines.py
其实作用很大,就看你怎么用它:
1 | import json |
使用 pipelines.py
得将其加入 settings.py
使其生效:
1 | ITEM_PIPELINES = { |
这样一个递归爬虫就搞定了,操作如下即可,名字对应 spider.name
:
1 | $ scrapy crawl hrtencent |
为不同的 parse 设置不同的 pipeline
可以如下在 pipelines
处理:
1 | def __init__(self): |
或者多个选项:
1 | if spider.name in ['hrtencent', 'hrtencent_details']: |
使用 Request 进一步爬取:
1 | def parse_lists(self, response): |
断点调试
在需要断点的地方加入, 将会进入一个 python shell,拥有当前 response
1 | inspect_response(response) |
看看我写的也无妨,不过水平很菜,且看且过:https://github.com/youngdze/ScrapyExecise