码迷,mamicode.com
首页 > 其他好文 > 详细

scrapy基本使用(一)

时间:2017-06-09 22:37:03      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:next   理解   com   简单   doc   str   item   request   改变   

scrapy基本使用(一)

 参考文档:Scrapy入门教程 http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html

 

1、 安装

python3.5 按照官网大写的安不上,要是小写的才能安上

pip install scrapy

理论上如果报错,再看几遍就好了,至少我是这样,可能是网络问题吧。

 

2、 基础操作

1) 创建项目

这是第一步,因为我们要使用人家搭好的框架,这步就是生成框架。

scrapy startproject tutorial

执行成功会在当前目录生成一个文件夹。

 

2) 文件夹里的内容

官网说的很详细了,这里引用官网,我根据自己浅薄的知识理解一下。

scrapy.cfg: 项目的配置文件

tutorial/: 该项目的python模块。之后您将在此加入代码。(这才是核心呀。。)

tutorial/items.py: 项目中的item文件.(这是创建容器的地方,爬取的信息分别放到不同容器里)

tutorial/pipelines.py: 项目中的pipelines文件.

tutorial/settings.py: 项目的设置文件.(我用到的设置一下基础参数,比如加个文件头,设置一个编码)

tutorial/spiders/: 放置spider代码的目录. (放爬虫的地方)

 

3) 定义容器(items.py)

我个人认为,容器不用一开始就定好,应该是一点一点加的,但是官网就这个顺序。。

修改items.py

import scrapy

class DmozItem(scrapy.Item): #创建一个类,继承item类,就是继承人家写好的容器嘛
    title = scrapy.Field() # 取哪些内容,就创建哪些容器
    link = scrapy.Field()
    desc = scrapy.Field()

 

3、 爬虫的编写

例子:

import scrapy

class DmozSpider(scrapy.Spider): # 继承Spider类
    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] # 获取url,用”/”分段,获去倒数第二个字段
        with open(filename, wb) as f:
            f.write(response.body) # 把访问的得到的网页源码写入文件

 

这里需要重点说一下parse方法

被调用时,每个初始URL完成下载后生成的 Response 对象将会作为唯一的参数传递给该函数。

该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的 Request 对象。

 

简单说就是用来编写爬虫的主体,response就是网页源码。

 

4、 启动爬虫

一条命令:

 

scrapy crawl dmoz

 

执行爬虫的时候发生了什么?

 

Scrapy为Spider的 start_urls 属性中的每个URL创建了 scrapy.Request 对象,并将 parse 方法作为回调函数(callback)赋值给了Request。

例:

yield scrapy.Request(self.url + nextLink, callback=self.parse)

 

Request对象经过调度,执行生成 scrapy.http.Response 对象并送回给spider parse() 方法。

 

这里我们了解到请求链接的改变是靠回调函数实现的。

 

scrapy基本使用(一)

标签:next   理解   com   简单   doc   str   item   request   改变   

原文地址:http://www.cnblogs.com/zhaijiahui/p/6973858.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!