收藏官网首页
查看: 11921|回复: 1

初试python爬虫框架Scarpy

5

主题

12

帖子

60

积分

注册会员

Rank: 2

积分
60
跳转到指定楼层
楼主
发表于 2015-11-30 10:39:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
好的工具是成功的开始,最近在研究python的爬虫框架,瞄上了Scarpy。也在此简单分享一下:

一、Scarpy简介
Scrapy 是一个快速的高层次的屏幕抓取和网页爬虫框架,爬取网站,从网站页面得到结构化的数据,它有着广泛的用途,从数据挖掘到监测和自动测试,Scrapy完全用Python实现,完全开源,代码托管在Github上,可运行在Linux,Windows,Mac和BSD平台上,基于Twisted的异步网络库来处理网络通讯,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片。

二、Scrapy安装
习惯使用python的朋友,对pip一定不陌生,使用pip即可快速安装。
pip install Scrapy

或者,使用easy_install安装:
easy_install Scrapy

三、定制自己的爬虫开发(简介)
1、切换到文件目录,开启新的工程:
scrapy startproject test

2、这个命令会在当前目录下创建一个新目录test,结构如下:
test/  
   scrapy.cfg     
   test/  
       __init__.py  
       items.py  
       pipelines.py  
       settings.py  
       spiders/  
           __init__.py

scrapy.cfg: 项目配置文件
items.py: 需要提取的数据结构定义文件
pipelines.py: 管道定义,用来对items里面提取的数据做进一步处理,如保存等
settings.py: 爬虫配置文件
spiders: 放置spider的目录

3、定义Item
在items.py里面定义我们要抓取的数据:
from scrapy.item import Item, Field  

class TestItem(Item):  
   title = Field()  
   link = Field()  
   desc = Field()  
from scrapy.item import Item, Field class DmozItem(Item):   title = Field()   link = Field()   desc = Field()

这里我们需要获取目标页面上的标题,链接,描述,所以定义一个对应的items结构,不像Django里面models的定义有那么多种类的Field,这里只有一种就叫Field(),再复杂就是Field可以接受一个default值。

4、实现Spider
spider只是一个继承字scrapy.spider.BaseSpider的Python类,有三个必需的定义的成员
name:名字,这个spider的标识
start_urls:一个url列表,spider从这些网页开始抓取
parse():一个方法,当start_urls里面的网页抓取下来之后需要调用这个方法解析网页内容,同时需要返回下一个需要抓取的网页,或者返回items列表
所以在spiders目录下新建一个spider,test_spider.py:

class TestSpider(BaseSpider):  
   name = "cnbeta.com"  
   start_urls = [  'http://www.cnbeta.com'   ]  
       
    rules = (

Rule ( SgmlLinkExtractor ( allow = ( ‘/articles/.*\.htm’ , ) ) ,

callback = ‘parse_page’ , follow = True ) ,

)

def parse_page ( self , response ) :

item = CnbetaItem ( )

sel = Selector ( response )

item [ 'title' ] = sel . xpath ( ‘//title/text()’ ) . extract ( )

item [ 'url' ] = response . url

return item

5、运行爬虫

scrapy crawl cnbeta - o result .json - t json

将结果输出到result.json -t json指定文件格式为json


到现在,我们就完成了一个基本的爬虫的实现,可以试试看结果。

1

主题

88

帖子

286

积分

中级会员

Rank: 3Rank: 3

积分
286
沙发
发表于 2015-11-30 15:56:12 | 只看该作者
我也来试试~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表