Scrapy入门
Scrapy :
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了 页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。
Selectors选择简介:
从网页中提取数据有很多方法。Scrapy使用了一种基于 XPath 和 CSS 表达式机制:
Scrapy Selectors。 关于selector和其他提取机制的信息请参考 Selector文档 。
Selector有四个基本的方法:
xpath()
: 传入xpath表达式,返回该表达式所对应的所有节点的selector list列表 。
css()
: 传入CSS表达式,返回该表达式所对应的所有节点的selector list列表.
extract()
: 序列化该节点为unicode字符串并返回list。
re()
: 根据传入的正则表达式对数据进行提取,返回unicode字符串list列表。
Scrapy安装:
1. scrapy需要安装第三方库文件,lxml和Twisted3.下载好文件之后,在DOS命令下pip install 文件的位置(lxlm)安装。
安装完成就可以安装:pip install scrapy
还需要安装 win32(启动蜘蛛的时候会提示安装,根据python版本来的我32位)
pip install pypiwin32
Scrapy API地址:https://docs.scrapy.org/en/latest/
Scrapy运行流程
2 引擎通知调度器,调度器得到通知将URL排序入队,并加以处理。
3 引擎通知调度器,调度器将处理好的request返回给引擎
4 引擎接收到request后告诉下载器,按照setting中配置的顺序下载这个request的请求
5 下载器收到请求,将下载好后的东西返回给引擎。如果下载失败,下载器会通知引擎,引擎再通知调度器,调度器收到消息后会记录这个下载失败的request。
6 引擎得到下载好的东西后,通知spider(这里responses默认是交给def parse()函数处理)
7 Spider收到通知后,处理接收的数据
8 Spider处理完数据后返回给引擎两个结果:一个是需要跟进的URL,另一个是获取到的item数据。
9 引擎将接收到的item数据交给管道处理,将需要跟进的URL交给调度器处理。重复循环直到获取完需要的全部信息。
创建项目:
找一个你以后存放scrapy文件的地方执行命令:scrapy startproject JMeterVersion(文件名)
具体代码如下:
import scrapy
class huya(scrapy.Spider): name = "cainiao" start_urls = [ "http://www.runoob.com/php/php-tutorial.html", ] def parse(self, response): list = response.css("div.codelist.codelist-desktop a") for tex in list: print(tex.css("a::text").extract_first())
定义Item
Item 是保存爬取到的数据的容器;其使用方法和python字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。
1、 对item进行建模→从需要爬取的网站中获取名字,url,以及网站的描述
2、 在item中定义相应的字段,编辑项目中的items.py文件
import scrapy
class DmozItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
desc = scrapy.Field()