scrapy基础
使用python做爬虫,scrapy是个十分优秀好用的框架,使用得当能大大的提高效率,本文简单介绍下scrapy的基础。
结构:
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())
上一篇:使用python爬取古诗文网
下一篇:使用scrapy下载笔趣阁小说