一个咸鱼的python爬虫之路(五):scrapy 爬虫框架

栏目: Python · 发布时间: 6年前

内容简介:一个咸鱼的python爬虫之路(五):scrapy 爬虫框架

介绍一下scrapy 爬虫框架

安装方法 pip install scrapy 就可以实现安装了。我自己用anaconda 命令为conda install scrapy。

一个咸鱼的 <a href='https://www.codercto.com/topics/20097.html'>python</a> 爬虫之路(五):scrapy 爬虫框架

1 Engine从Spider处获得爬取请求(Request)

2Engine将爬取请求转发给Scheduler,用于调度

3 Engine从Scheduler处获得下一个要爬取的请求

4 Engine将爬取请求通过中间件发送给Downloader

5 爬取网页后,Downloader形成响应(Response)通过中间件发给Engine

6 Engine将收到的响应通过中间件发送给Spider处理Engine将爬取请求转发给Scheduler,用于调度

7 Spider处理响应后产生爬取项(scraped Item)

和新的爬取请求(Requests)给Engine

8 Engine将爬取项发送给Item Pipeline(框架出口)

9 Engine将爬取请求发送给Scheduler

Engine控制各模块数据流,不间断从Scheduler处

获得爬取请求,直至请求为空

框架入口:Spider的初始爬取请求

框架出口:Item Pipeline

Engine                                                                              

(1) 控制所有模块之间的数据流

(2) 根据条件触发事件

不需要用户修改

Downloader

根据请求下载网页

不需要用户修改

Scheduler

对所有爬取请求进行调度管理

不需要用户修改

Downloader Middleware

目的:实施Engine、Scheduler和Downloader

之间进行用户可配置的控制

功能:修改、丢弃、新增请求或响应

用户可以编写配置代码

Spider

(1) 解析Downloader返回的响应(Response)

(2) 产生爬取项(scraped item)

(3) 产生额外的爬取请求(Request)

需要用户编写配置代码

Item Pipelines

(1) 以流水线方式处理Spider产生的爬取项

(2) 由一组操作顺序组成,类似流水线,每个操

作是一个Item Pipeline类型

(3) 可能操作包括:清理、检验和查重爬取项中

的HTML数据、将数据存储到数据库

需要用户编写配置代码

了解了基本概念之后我们开始写第一个scrapy爬虫吧。

首先要新建一个爬虫项目scrapy startproject xxx(项目名)

一个咸鱼的python爬虫之路(五):scrapy 爬虫框架

这个爬虫就简单的爬取一个小说网站的书名与作者吧。

我们现在创建了爬虫项目book现在来编辑他的配置

一个咸鱼的python爬虫之路(五):scrapy 爬虫框架

二级book目录下这些就是配置文件上面已经介绍过了,在修改这些之前

我们现在一级book目录下创建一个start.py 来用于scrapy爬虫能在IDE里

面运行。文件里面写下如下代码。

一个咸鱼的python爬虫之路(五):scrapy 爬虫框架

前两个参数是固定的,第三个参数是你spider的名字

接下来我们就在items里面填写字段:

一个咸鱼的python爬虫之路(五):scrapy 爬虫框架

然后在spider中创建爬虫主程序book.py

我们要爬取的网站为 http://book.km.com/

通过点击网站不同种类小说会发现网站地址是 http://book.km.com/+小说种类拼音.html

通过这个我们来写读取网页的内容

一个咸鱼的python爬虫之路(五):scrapy 爬虫框架

得到这个之后我们通过parse 函数来解析所获取的网页并提取所需信息。

一个咸鱼的python爬虫之路(五):scrapy 爬虫框架

网页分析提取数据是通过BeautifulSoup库来的,这里就略了。自己分析2333~

程序写好我们要存储所爬取的信息就要编辑Pipelines.py 了

这里提供两个保存方式

1保存为txt文本

一个咸鱼的python爬虫之路(五):scrapy 爬虫框架

2 存入数据库

一个咸鱼的python爬虫之路(五):scrapy 爬虫框架

要让这个成功运行我们还需要在setting.py中配置

ITEM_PIPELINES = {    'book.pipelines.xxx': 300,}
xxx为存储方法的类名,想用什么方法存储就改成那个名字就好运行结果没什么看头就略了
第一个爬虫框架就这样啦期末忙没时间继续完善这个爬虫之后有时间将这个爬虫完善成把小说内容等一起爬下来的程序再来分享一波。
附一个book的完整代码:
import scrapy
from bs4 import BeautifulSoup
from book.items import BookItem


class Bookspider(scrapy.Spider):
    name = 'book'   #名字
    allowed_domains = ['book.km.com']  #包含了spider允许爬取的域名(domain)列表(list)
    zurl='http://book.km.com/'

    def start_requests(self):
        D=['jushi','xuanhuan'] #数组里面包含了小说种类这里列举两个有需要可以自己添加
        for i in D: #通过循环遍历
            url=self.zurl+i+'.html'
            yield scrapy.Request(url, callback=self.parse)

    def parse(self, response):
        imf=BeautifulSoup(response.text,'lxml')
        b=imf.find_all('dl',class_='info')

        for i in b:
            bookname=i.a.string
            author = i.dd.span.string
            item = BookItem()
            item['name'] = bookname
            item['author'] = author

            yield item

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Professional JavaScript for Web Developers

Professional JavaScript for Web Developers

Nicholas C. Zakas / Wrox / 2009-1-14 / USD 49.99

This eagerly anticipated update to the breakout book on JavaScript offers you an in-depth look at the numerous advances to the techniques and technology of the JavaScript language. You'll see why Java......一起来看看 《Professional JavaScript for Web Developers》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试