scrapy基础

作者:xin 时间:22-12-24 20:28:00 阅读数:1809人阅读

使用python做爬虫,scrapy是个十分优秀好用的框架,使用得当能大大的提高效率,本文简单介绍下scrapy的基础。

结构:

1.png

Scrapy Engine  引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。 


调度器(Scheduler)  调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎。


下载器(Downloader)  下载器负责获取页面数据并提供给引擎,而后提供给spider。


Spiders  Spider是Scrapy用户编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。


Item Pipeline  Item Pipeline负责处理被spider提取出来的item。典型的处理有清理、 验证及持久化(例如存取到数据库中)。 


下载器中间件(Downloader middlewares)  下载器中间件是在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的response。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。


Spider中间件(Spider middlewares)  Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出(items及requests)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。


使用:

1、首先下载scrapy框架,直接使用pip install scrapy即可,但是默认源速度较慢,使用国内源一分钟内安装完成

2、创建scrapy项目的命令:scrapy startproject projectname(项目名)

3、创建爬虫的命令:首先进入爬虫文件目录下,运行scrapy genspider spidername(爬虫名) domian.com(爬取网站的根域名)

4、修改爬虫文件代码:

import scrapy

class SinaspiderSpider(scrapy.Spider):
    name = "sinaspider"
    allowed_domains = ["feed.mix.sina.com.cn"]
    start_urls = ["https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid=2509&num=50&page=2"]
    def parse(self, response,**kwargs):
        pass
        result=response.json()

修改start_urls的内容,把要爬取的目标url放进去即可。def parse下对响应数据进行解析,如果返回结果是json数据需要使用json()方法,如果返回的是html代码则可以使用xpath。

5、运行爬虫的代码:scrapy crawl sinaspider

也可以创建start.py文件来代替执行命令行代码:

from scrapy import cmdline

# cmdline.execute("scrapy crawl sinaspider --nolog".split())
cmdline.execute("scrapy crawl sinaspider".split())