爬虫爬取网页数据的过程
网页三大特征
- 网页都有自己唯一的URL(统一资源定位符)来进行定位;
- 网页都是使用HTML(超文本标记语言)来描述页面信息;
- 网页都使用HTTP/HTTPS协议来传输HTML数据;
爬虫的设计思路
1.首先确定需要爬取网页URL地址
2.通过HTTP/HTTPS协议来获取相应的HTML页面
3.提取HTML页面里有用的数据
a.如果是需要的数据就保存起来
b.如果是页面里的其他URL,那就继续执行第二步。
爬虫基本流程
发起请求
通过HTTP库向目标站点发起请求,就是发送一个Request,请求可以包含额外的header等信息,等待服务器的响应
获取响应内容
如果服务器正常响应,会得到一个Reponse,Reponse的内容便是所要获取的页面内容,类型可能有HTML,json字符串,二进制数据(如图片视频)等类型。
解析内容
得到的内容可能是HTML,可以用正则表达式,网页解析库进行解析,可能是json,可以直接转为JSON解析对象解析,可能是二进制数据,可以做保存或者进一步处理。
保存数据
保存的形式多种多样,可以保存成文本,也可以保存到数据库,或者保存特定格式文件
反爬虫机制与对策
1 通过分析用户请求的Headers信息进行反爬虫。网站中应用的最多
2通过验证用户行为进行反爬虫,不如通过判断同一个ip在短时间内是否频繁访问对应网站等进行分析。
3通过动态页面增加爬取的难度,达到反爬虫目的。
对策
1 在爬虫中构造这些用户请求的headers信息,以此将爬虫伪装成浏览器
2 使用代理服务器并经常切换代理服务器方式,一般就能够攻克限制。
3.利用一些软件,比如selenium+phantomJS就可以攻克
反爬虫的手段 :user-agent、代理、验证码、动态数据加载、加密数据
数据的选择与处理
1 网页文本 如HTML文档 json格式文本
2.图片 获取到的是二进制文件保存为图片格式
3.视频 获取的二进制文件保存为视频格式即可
4.其他 只要能请求到的,都能获取
解析方式
1 直接处理
2 json解析
3 正则表达式
4 BeautifulSoup
5 PyQuery
6 XPath
怎么解决JavaScript渲染问题
1 分析Ajax
2 Selenium、WebDriver
3.Splash
4. PyV8、Ghost.py
怎么保存数据
1 文本: 纯文本 、json Xml等
2, 关系型数据库 如mysql 、oracle sql sever等具有结构形式存储
3. 非关系型数据库 如 MongDB、Redis等key-value形式存储
4. 二进制文件 如图片、视频、音频等直接保存特定的格式