再看Scrapy(1) 基本概念
再看Scrapy(1) 基本概念

1 准备
安装scrapy:
	国内镜像源(官方的pypi不稳定)安装
	pip3 install -i https://pypi.douban.com/simple/ scrapy
安装virtualenvwrapper:
下载
	pip3 install virtualenvwrapper
创建目录存放虚拟环境
	mkdir ~/.virtualenvs
配置环境变量
	export WORKON_HOME=~/.virtualenvs
	source /usr/local/python3/bin/virtualenvwrapper.sh
	source ~/.bashrc
2 技术选择与实现(scrapy vs reqeust + beautifulsoup)
不是一个层级的使用
requests + beautifulsoup 是库
scrapy 是框架
性能
在网络请求方面:
	scrapy 基于twisted实现,具有高性能优势 --- 异步IO ;
在数据处理方面:
	scrapy方便扩展,很多内置功能;内置 css,xpath选择器selector非常方便;lxml是c写的 所以更快
	而beautifulsoup 是 python写的,会慢一点
3 爬虫的应用
1 .搜索引擎 --- 百度,goole(所有互联网的信息) ,垂直领域的搜索引擎(汽车,娱乐信息)
2  推荐引擎 --- 今日头条,数据推送
3  机器学习的样本
4  数据分析 ---金融,舆情分析
4 网页分类
静态网页 --- 类似静态博客系统,没有数据库操作
动态网页 --- 淘宝,信息更新(动态加载)
webservice(restapi) ajax + rest api
5 爬虫的常用策略
网站的 url 连接一般是 树形的结构(分层结构,不同的路由),而且网站的url 可能是环路,需要去重
(1)深度优先算法 和 实现 (scrapy默认使用)
	递归实现
	def depth_tree(tree_node):
		if tree_node is not None:
			if tree_node._left is not None:
				return depth_tree(tree_node._left)
			if tree_node._right is not None:
			    return depth_tree(tree_node._right)
    递归层数太多---会有栈溢出的问题
(2)广度优先算法 和 实现
队列实现
def level_queue(root):
	if root is None:
		return 
	my_queue = []
	node =root
	my_queue.append(node)
	while my_queue:
		node = my_queue.pop(0)
		if node.lchild is not None:
			my_queue.append(node.lchild)
		if node.rchild is not None:
			my_queue.append(node.rchild)												
											再看Scrapy(1) 基本概念的更多相关文章
- scrapy之基础概念与用法
		
scrapy之基础概念与用法 框架 所谓的框架就是一个项目的半成品.也可以说成是一个已经被集成了各种功能(高性能异步下载.队列.分布式.解析.持久化等)的具有很强通用性的项目模板. 安装 Linux: ...
 - 一文带你看清HTTP所有概念(转)
		
一文带你看清HTTP所有概念 上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性.我们接着上篇文章没有说完的 HTTP 标头继 ...
 - mysql索引设计的注意事项(大量示例,收藏再看)
		
mysql索引设计的注意事项(大量示例,收藏再看) 目录 一.索引的重要性 二.执行计划上的重要关注点 (1).全表扫描,检索行数 (2).key,using index(覆盖索引) (3).通过ke ...
 - 再看Ajax
		
再回顾Ajax相关的内容,再次梳理学习还是很有必要的,尤其是实际的开发中,ajax更是必不可少,仔细学习以便避免不必要的错误. 文章导读: --1.使用XMLHttpRequest---------- ...
 - 再看ftp上传文件
		
前言 去年在项目中用到ftp上传文件,用FtpWebRequest和FtpWebResponse封装一个帮助类,这个在网上能找到很多,前台使用Uploadify控件,然后在服务器上搭建Ftp服务器,在 ...
 - 再看 AspriseOCR - OCR应用开发 -20151124
		
再看 AspriseOCR - OCR应用开发 我写这个博文时间为 2015/11/24日,注意时间因为,网上很多文章时间上很久远,有的已经不能参考了 很多人面对从图片中识别文字或者数字0~9 A~ ...
 - Android菜鸟的成长笔记(17)—— 再看Android中的Unbounded Service
		
原文:Android菜鸟的成长笔记(17)-- 再看Android中的Unbounded Service 前面已经写过关于startService(Unbounded Service)的一篇文章:&l ...
 - 再看case语句
		
再看case语句,case语句只处理单条记录,而不是set 列名的使用,可以当做数值来使用: case when 后面简直是完美的的,什么东西都是能放的,只要是一个逻辑上的true/false的逻辑就 ...
 - android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升
		
android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升
 
随机推荐
- CoreThink开发(十二)更改默认出错异常页防止暴露敏感数据
			
默认的异常页会打印文件位置,而且是绝对路径,会打印SQL语句,真实上线一定不要用这个默认的,而且关闭trace关闭调试模式也不行. 针对CoreThink1.2 ThinkPHP3.2 这个文件在 A ...
 - Apache和Nigix
			
Apache , Nginx 是开源的HTTP服务器软件 HTTP服务器本质上也是一种应用程序--它通常运行在服务器之上,绑定服务器的IP地址并监听某一个tcp端口来接收并处理HTTP请 ...
 - table实现  js数据访问   传递json数据用render_to_response
			
$(document).ready(function(){ $.ajax({ url:'/query/', dataType:'json', type:'GET', success:function( ...
 - cdojR - Japan
			
地址:http://acm.uestc.edu.cn/#/contest/show/95 题目: R - Japan Time Limit: 3000/1000MS (Java/Others) ...
 - 华为S5700系列交换机使用高级ACL限制不同网段的用户互访
			
组网图形 图1 使用高级ACL限制不同网段的用户互访示例 组网需求 如图一所示,某公司通过Switch实现各部门之间的互连.为方便管理网络,管理员为公司的研发部和市场部规划了两个网段的IP地址.同时为 ...
 - 《Maven实战》第13章 版本管理
			
版本管理:项目整体版本的演变过程的管理,如从1.0-SNAPSHOT到1.0,再到1.1-SNAPSHOT 版本控制:借助版本控制工具追踪代码的每一个变更 13.1什么是版本管理 版本管理:项目整体版 ...
 - Spring_事务(1)
 - AtCoder Regular Contest 094
			
AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...
 - maven项目Dao层优化
			
平时我们习惯一个实体类就对应一个dao类,这样做,增删改查都大同小异,只是实体类对象不一样而已,因此,我们可以把公用的方法抽取来,建立一个IBaseDao接口,如下: public interface ...
 - PHP模拟登录发送闪存
			
url,post,cookie. 有这三种就可以了. 下面使用Postman模拟发送. 其中,body中是post参数,header中是cookie数据. 下面是php模拟代码. public fun ...