python分布式爬虫去重_Python分布式爬虫(三) - 爬虫基础知识

0 相关源码

1 技术选型 爬虫能做什么

1.1 scrapy VS requests + beautifulsoup

做爬虫的时候,经常都会听到 scrapy VS requests+beautifulsoup的组合 在本次分布式爬虫实现中只用scrapy而不用后者的原因是:

requests 和 beautifulsoup 都是库, scrapy是一个框架 框架中可以应用 requests等,可以集合很多第三方库

基于 twisted(异步IO框架) 性能是最大的优势

方便扩展 提供了很多内置的功能,提高开发速度

内置 css和 xpath selector 对html或者xml进行分析,非常方便, beautifulsoup缺点就是慢

实践中还是会用到requests,但是不会用到beautifulsoup,因为它的功能可以直接使用scrapy的select完成.

1.2 网页分类

常见类型的服务

静态网页 事先在服务器端生成好的页面,内容固定

动态网页 从服务器端取数据返回

webservice(REST API) 也是属于动态网页的一种,只是通过ajax方式和后台交互的一种技术

1.3 爬虫能做什么

搜索引擎-百度,google,垂直领域搜索引擎(有一个目标,知道自己到底爬什么数据)

推荐引擎-今日头条(根据浏览习惯猜测感兴趣的内容进行推送)

机器学习的数据样本

数据分析-金融数据分析,舆情分析

2 正则表达式

2.1 为何需要

为什么有css或者xpath selector还要学正则表达式,有时候根据selector获得了整个标签内的内容,但是还要进行进一步的筛选,比如里面的数字信息等

2.2 作用

可以帮我们判断某个字符串是否符合某一个模式 提取整个字符串里面的重要的部分信息

2.3 常用字符的用法

^ : 以什么字符开头$ : 以什么字符结尾. : 任意字符* :出现任意次数,0次或者更多次():还提取按模式取出来的子串。例如,".*(b.\*b).\*"表示不管前后是什么的两个b之间的子串? :下面详解+ :字符至少出现一次{1}:前面的字符出现一次{3,}: 要求前面的字符必须出现3次以上{2,5}:前面的字符至少出现2次,最少出现5次| : 或的关系\[\] : 中括号里面的内容只要满足任何一个即可,也可以是一个区间,中括号里面的^表示不等于,中括号里面的符号就是符号,不是特殊符号的含义\\s :表示空格符\\S : 刚好与小s的意思相反,只要不是空格都可以\\w : 表示\[A-Za-z0-9_\]其中的任意一个字符\\W : 与\\w的意思刚好相反\[\\u4E00-\\u9FA5\] : unicode编码,含义是汉字,意思是只要出现汉字就可以。\\d : 表示数字

2.4 coding 演示

新建项目

image

^ : 以什么字符开头 此处以J开头即可!

image

$ : 以什么字符结尾 此处以4结尾即可!

image

J开头,中间为任意字符,最后以4结尾

image

? : 非贪婪匹配模式

默认的情况下,匹配是贪婪模式,匹配最大长度 比如对于 "bobby123"这个待匹配的,结果就是bb,而不是bobb,所以这就是贪婪,反向匹配(或者理解成直到结束符合的最后一个结果) 非贪婪匹配就是从左边开始,只需要出现一个结果就可以了,".?(b.?b)."表示对两个b从左到右只要出现一次就可 ".?(b.b)."第二个b不要问好,那么第二个b就是贪婪模式,会持续匹配到最后一个b

现在源数据变更为

image

欲取得字符串 boooooooob

image

然而现实,却是

image

非贪婪模式尽

你可能感兴趣的:(python分布式爬虫去重)