scrapy 基础学习

#scrapy 的优势
1 request和beautifulsoup是库,scrapy是框架,不是一个层次的
2 scrapy框架中可以加入request和beautifulsoup,可以基层很多第三方库
3 scrapy基于twisted,实际上是一个异步i/o的框架,所以性能是最大的优势
4 scrapy方便扩展,提供了很多内置功能
5 scrapy内置的css和xpath selector 非常方便,beautifulsoup最大的缺点就是慢。

#网页分类

1 静态网页
事先在服务器端生成好的
2 动态网页
根据传递的参数不同,发送请求获取浏览器
3 webservice(restapi)

#爬虫能做什么
1 搜索引擎—百度 谷歌 垂直搜索引擎
2 推荐引擎–今日头条 根据浏览记录来爬取相关内容推荐给用户
3 机器学习的数据样本
4 数据分析,舆情分析

#正则表达式
!正则表达式是反向匹配,从后往前
!正则是默认贪婪模式,贪婪模式,就是在整个表达式匹配成功的前提下,尽可能多的匹配
!正则表达式会提取括号内的内容
1 "^" :定义开头字符,以符号后面的字符开头,"^b"代表以b字母开头
"$":定义结尾字符,以符号前面的字符结尾
2 ".": 任意字符,中英文下划线都可以
3 “*”:它前面的字符可以出现多次
4 “?”:非贪婪模式,非贪婪模式,就是在整个表达式匹配成功的前提下,尽可能少的匹配
5 “+” :符号前面的内容至少出现一次,
6 {2} 前面的字符出现的次数
{2,5} 出现最小2次最多5次
{2,}出现2次或者更多
7 “|”:或,要在括号里使用
8“[abcd]”:中括号里面的字符满足一个即可,
可以写区间[0-9] a-z [A-Za-z0-9_]
中括号里面写:^1 表示非1
9 \s 空格
\S 只要不是空格都可以
\w [A-Za-z0-9_]
\W 和\w相反
\d 数字
10 [\u4E00-\u9FA5] 汉字

深度优先和广度优先
深度优先,递归实现,如果递归太深或者递归没有跳出会发生栈溢出
广度优先,队列实现

爬虫去重策略

1 把访问过的url保存到数据库中,但是速度慢
2 把访问过的url保存到set中,也就是内存中,只需要o(1)的代价就可以查询到
url,但是内存占用大
3.url经过md5等方法哈希后保存到set中,可以将字符缩减到固定长度,比如128bit,就是16byte
4.用bitmap方法,将访问过的url通过hash函数映射到某一位,申请一个8个bit,也就是一个byte,将访问过的hash函数映射到某一个位置上
5 bloofilter方法对bitmap进行改进,多重hash函数降低冲突

猜你喜欢

转载自blog.csdn.net/qq_40916110/article/details/85212993