网页三大特征:
- 每个网页都有自己的url来定位
- 网页都是用HTML来描述页面信息
- 网页都是用HTTP/HTTPS鞋业来传输HTML数据
爬虫的设计思路:
1.确定需要爬取的网页url地址
2.通过HTTP/HTTPS鞋业来获取对应的HTML页面
3。提取HTML页面里有用的数据
为什么选择Python做爬虫:
- PHP:虽然是世界上最好的语言,但是对多线程、异步支持不好,并发处理能力
- Java:网络爬虫较为完善,但是Java语言本身很笨重,重复代码很多,重构成本很高,任何修改都会导致代码的大量变动。
- C/C++:运行效率和性能最强,但是学习成本很高,代码成型很慢。
- Python:语法优美、代码简介、支持的模块多,调用其他接口方便(胶水语言)
如何住区HTML页面:
HTTP请求的处理,urllib、urllib2、requests
处理后的请求可以模拟浏览器发送请求,获取服务器相应的文件
解析服务器相应的内容
——-re、xpath、BeautifulSoup4(bs4)、jsonpath、pyquery等
——-使用某种描述性语言来给我们需要提取的数据定义一个匹配规则
如何采集动态HTML、验证码的处理
——-通用的动态页面采集:Selenium、PhantomJS(无界面):模拟真实浏览器
——-机器识别验证码Tesseract。
Scrapy框架:
——-高定制性高性能(异步网络框架twisted),所以数据下载速度快
——-提供了数据存储、数据下载、提取规则等组件
分布式策略:
——-scrapy-redis,以Redis数据库为核心的一套组件
通用爬虫:搜索引擎用的爬虫系统
目标:尽可能将所有的网页都下载下来,放到本地服务器形成备用数据,
——-然后进行处理,最后提供一个用户检索接口
缺点:
——–只能提供文本内容不能提供多媒体文件和二进制文件
——-提供结果千篇一律
——-不能理解人类语义上的检索
聚焦爬虫:程序员写的正对某种需求的爬虫