Scrapy框架,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
刚开始学习这个框架。不太好评论。只是感觉这个框架有些Java的感觉,需要太多的其他模块的支持。
(一)创建 scrapy 项目
代码语言:javascript复制# 使用 scrapy startproject scrapy_test
├── scrapy_test
│ ├── scrapy.cfg
│ └── scrapy_test
│ ├── __init__.py
│ ├── items.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ ├── __init__.py
# 进行创建 scrapy 项目
(二)说明
代码语言:javascript复制scrapy.cfg: 项目配置文件
items.py: 需要提取的数据结构定义文件
pipelines.py:管道定义,用来对items里面提取的数据做进一步处理,如保存等
settings.py: 爬虫配置文件
spiders: 放置spider的目录
(三)依赖包
依赖包比较麻烦。
代码语言:javascript复制# python-dev 包的安装
apt-get install python-dev
# twisted, w3lib, six, queuelib, cssselect, libxslt
pip install w3lib
pip install twisted
pip install lxml
apt-get install libxml2-dev libxslt-dev
apt-get install python-lxml
pip install cssselect
pip install pyOpenSSL
sudo pip install service_identity
# 安装好之后,便可使用 scrapy startproject test 进行创建项目
(四)抓取实例。(原文地址: http://blog.csdn.net/HanTangSongMing/article/details/24454453 )
Git: https://github.com/maxliaops/scrapy-itzhaopin
(1)创建scrapy项目
代码语言:javascript复制dizzy@dizzy-pc:~/Python/spit$ scrapy startproject itzhaopin
New Scrapy project 'itzhaopin' created in:
/home/dizzy/Python/spit/itzhaopin
You can start your first spider with:
cd itzhaopin
scrapy genspider example example.com
dizzy@dizzy-pc:~/Python/spit$
dizzy@dizzy-pc:~/Python/spit$ cd itzhaopin
dizzy@dizzy-pc:~/Python/spit/itzhaopin$ tree
.
├── itzhaopin
│ ├── __init__.py
│ ├── items.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ └── __init__.py
└── scrapy.cfg
# scrapy.cfg: 项http://my.oschina.net/lpe234/admin/new-blog目配置文件
# items.py: 需要提取的数据结构定义文件
# pipelines.py:管道定义,用来对items里面提取的数据做进一步处理,如保存等
# settings.py: 爬虫配置文件
# spiders: 放置spider的目录
(2)定义要抓取的数据结构 items.py
代码语言:javascript复制from scrapy.item import Item, Field
# 定义我们要抓取的数据
class TencentItem(Item):
name = Field() # 职位名称
catalog = Field() # 职位类别
workLocation = Field() # 工作地点
recruitNumber = Field() # 招聘人数
detailLink = Field() # 职位详情链接
publishTime = Field() # 发布时间
(3)实现Spider类
Spider是继承自 scarpy.contrib.spiders.CrawlSpider 的Python类,有3个必须定义的成员。
name : 名称,spider的标识。
start_urls : 一个url列表,spider从这些网页开始抓取
parse() : 一个方法。当start_urls里面的网页抓取下来之后需要调用这个方法来解析网页内容,同时需要返回下一个需要抓取的网页,或者返回items列表。
在spiders目录下面新建一个spider,tencent_spider.py :
代码语言:javascript复制#coding=utf-8
from scrapy.spider import BaseSpider
class DmozSpider(BaseSpider):
name = 'dmoz'
allowed_domains = ['dmoz.org']
start_urls = [
'http://www.dmoz.org/Computers/Programming/Languages/Python/Books/',
'http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/'
]
def parse(self, response):
filename = response.url.split('/')[-2]
open(filename, 'wb').write(response.info)
这个简单一些。 使用
代码语言:javascript复制scrapy crawl dmoz # 即可运行spider
闲来无事看Q空间,无意中又看到一大学同学。唉,好生佩服之感。
之前自己一直吵着要去黄山要去西藏,结果哪都没去。
前几天看到那个同学的Q空间状态,大约是江南某地。没太在意,然后看到踪迹又向南偏移,刚才看到到云南那边了。看评论说,真准备进藏。不禁感到惭愧。遂做此语!以明吾心!甚是惭愧,已致徒生敬意。
-- 2014年08月20日01:58:27