Scrapy
Scrapy是一个框架,可以帮助我们进行创建项目,运行项目,可以帮我们下载,解析网页,同时支持cookies和自定义其他功能。
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
【更多参考】http://www.cnblogs.com/wupeiqi/articles/6229292.html
scrapy框架介绍以及安装
Linux pip3 install scrapy Windows 1. pip3 install wheel 1-1安装Twisted a. http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted, 下载:Twisted-17.1.0-cp35-cp35m-win_amd64.whl b. 进入文件所在目录 c. pip3 install Twisted-17.1.0-cp35-cp35m-win_amd64.whl 2. pip3 install scrapy 3. windows上scrapy依赖 https://sourceforge.net/projects/pywin32/files/
创建一个scrapy工程:
创建一个scrapy工程:
scrapy startproject scy
scrapy genspider baidu baidu.com
baidu.py里面的内容
response.text可以打印具体的内容
scrapy crawl baidu
scrapy crawl baidu --nolog [不打印日志]
修改settting.py 让spider不去访问robot.txt文件
附: 查看spider文件的其他模板
scrapy genspider --list
项目结构以及爬虫应用简介
文件说明:
· scrapy.cfg 项目的主配置信息。(真正爬虫相关的配置信息在settings.py文件中)
· items.py 设置数据存储模板,用于结构化数据,如:Django的Model
· pipelines 数据处理行为,如:一般结构化的数据持久化
· settings.py 配置文件,如:递归的层数、并发数,延迟下载等
· spiders 爬虫目录,如:创建文件,编写爬虫规则
爬取笑话网
# -*- coding: utf-8 -*- import scrapy from scrapy.selector import HtmlXPathSelector from scrapy.http import Request class XiaohuarSpider(scrapy.Spider): name = "xiaohuar" allowed_domains = ["xiaohuar.com"] start_urls = ['http://www.xiaohuar.com/list-1-0.html'] visited_set = set() def parse(self, response): self.visited_set.add(response.url) # 1. 当前页面的所有校花爬下来 # 获取div并且属性为 class=item masonry_brick hxs = HtmlXPathSelector(response) item_list = hxs.select('//div[@class="item masonry_brick"]') for item in item_list: v = item.select('.//span[@class="price"]/text()').extract_first() print(v) # 2. 在当前页中获取 http://www.xiaohuar.com/list-1-d+.html, # page_list = hxs.select('//a[@href="http://www.xiaohuar.com/list-1-1.html"]') page_list = hxs.select('//a[re:test(@href,"http://www.xiaohuar.com/list-1-d+.html")]/@href').extract() for url in page_list: if url in self.visited_set: pass else: obj = Request(url=url,method='GET',callback=self.parse) yield obj
view-source: http://www.521609.com/daxuexiaohua/
Django和scrapy框架的小对比
Django和scrapy框架的小对比
########## scrapy ########## Django django-admin startproject mysite # 创建Django工程 cd mysite python3 namage.py startapp app01 python3 namage.py startapp app02 scrapy scrapy startproject scy # 创建scrapy工程 cd scy scrapy genspider chouti chouti.com scrapy crawl 名字 --nolog