首先解释:作者在大一自学爬虫,在各种坑坑洼洼下,积累了很多经验,如果你和我一样,刚开始学python网络爬虫,在我看来首先你得需要一个大局观,把所有的框架架起来,这样学习爬虫就非常轻而易举。
网络数据采集(网络爬虫)在大数据深入人心的时代,网络数据采集作为网络、数据库与机器学习等领域的交汇点,已经成为满足个性化网络数据需求的最佳实践。搜索引擎可以满足人们对数据的共性需求,即“我来了,我看见”,而网络数据采集技术可以进一步精炼数据,把网络中杂乱无章的数据聚合成合理规范的形式,方便分析与挖掘,真正实现“我征服”。工作中,你可能经常为找数据而烦恼,或者眼睁睁看着眼前的几百页数据却只能长恨咫尺天涯,又或者数据杂乱无章的网站中满是带有陷阱的表单和坑爹的验证码,甚至需要的数据都在网页版的PDF和网络图片中。而作为一名网站管理员,你也需要了解常用的网络数据采集手段,以及常用的网络表单安全措施,以提高网站访问的安全性,所谓道高一尺,魔高一丈……一念清净,烈焰成池,一念觉醒,方登彼岸,本文试图成为解决这些问题的一念,让你茅塞顿开,船登彼岸。
目录
6.反爬虫策略
python爬虫学习资料
链接:链接:https://pan.baidu.com/s/1JiLSUSgXI8EwHjqjsqvIUg
提取码:1024
1.python基本语法及面对对象的学习
学习资料:
链接:https://pan.baidu.com/s/1filGjaMxY1JUWiTxrQVLjQ
提取码:1024
python作为新时代的大方向,因为python的语法简单灵活,以及是一门面向对象的编程语言,受到了大部分程序员的青睐,所以说python就是网络爬虫的不二之选。
2.基础的爬取网站获取信息
网络爬虫的运行方式其实是十分简单,简单地说:获取网页 > 解析网页 > 储存数据。获取网页数据第一步为分析是静态网页还是动态网页,静态网页:一般扩展名为.html或.htm无后台数据库
动态网页:一般扩展名为.asp或.php有后台数据库。
首先要建立一个请求头,伪装,防止网站识别为爬虫,进行封杀,请求头包括User-Agent,cookies,refers。(不同网站利用不同请求头)
1.静态网页爬取
静态网页爬取十分简单,基本上就主要用python中request模块中的get请求。
import requests
url=requests.get("http://www.baidu.com")
print(url.text)
2.动态网页爬取
首先要了解一种新的技术——AJAX(ajax 全名 async javascript and XML(异步JavaScript和XML))Ajax 是一种无需重新加载整个网页的情况下,能够更新部分网页的技术。
Ajax = 异步 JavaScript + XML。Ajax 是一种用于创建快速动态网页的技术。如果网页利用AJAX的技术该如何获取网页呢?
1)通过浏览器审查元素解析地址
2)通过selenium模拟浏览器抓取
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。不过现在来说seleni更多的利用在爬虫领域,模拟用户来获取网页。
3.解析网站数据
1.正则表达式
2.BeatifulSoup模块
3.Xpath语法
性能 | 难易 | 提取数据方式 | |
正则表达式 | 快 | 较难 | 正则表达式 |
BeatifulSoup模块 | 快 | 简单 | Find方法,CSS选择器 |
Xpath语法 | 快 | 简单 | Xpath,CSS选择器 |
4.储存解析数据
1.txt,csv存储
2.MySQL存储 官网MySQL
3.MongoDB存储(建议) 官网:MongoDB: The Application Data Platform | MongoDB
5.加快数据解析速度
1.多线程,多进程,多协程
6.反爬虫策略
许多网页为了防止恶意爬虫频繁入侵,会设置爬虫,例如:不返回目标网页,设置验证码等等。一个好的爬虫工程师就要对反反爬虫体系了如指掌。以下是常见的反爬思路:
1.修改请求头
2.修改爬虫间隔时间
3.使用代理(不推荐)
4.更换IP地址
5.登陆获取数据
7.服务器采集
这一个环节就是把你的爬虫放到“云”上,可以随便改变自己的IP地址,可以放着爬虫IP被封的风险
8.分布式爬虫
分布式爬虫其实还有以下的优点: 代码基本上不用改,最多改改IP和cookie,而不必每一个脚本都去改输入任务。 很多搞爬虫的总爱吹嘘分布式爬虫,仿佛只有分布式才有逼格,不是分布式简单不配叫爬虫,这是一种很肤浅的思想。 分布式只是提高爬虫功能和效率的一个环节而已,它从来不是爬虫的本质东西。 爬虫的本质是网络请求和数据处理,如何稳定地访问网页拿到数据,如何精准地提取出高质量的数据才是核心问题。 分布式爬虫只有当爬虫任务量很大的时候才会凸显优势,一般情况下也确实不必动用这个大杀器,所以要明确你的目标是什么。
9.Scrapy框架学习
scrapy就是为了爬取网站的设计的框架,提取数据而编写的应用框架,把获取网页,解析网页,存储数据结合成一个大的框架。对于新手来说,刚开始完全可以用request+bs4,等到时机成熟,scrapy学起来也会易如反掌。