对小白而言,爬虫可能是一件非常复杂、技术性很高的事儿。例如说许多人觉得学爬虫一定要掌握 Python,然后系统学习 Python 的每个知识点,很久之后发现依旧爬不了数据;还有人则认为要先了解网页的知识,遂开始 HTML\CSS,结果入了前端的坑,瘁……
但了解正确的方法,短期内能够爬取主流网站的数据,我觉得实现并不难,但建议你开始就要树立明确的目标。
在目标的驱动下,你的学习才会更加的有效率。那些你觉得必须的专业知识,完全可以在完成目标的过程中学到的。这里给你提供一个零基础快速入门的学习方法。
01学习 Python 包并进行基本的爬虫步骤
绝大多数爬虫都是按“发送请求——获得页面——解析页面——抽取并储存内容”的流程来实现,这就是模拟了我们使用浏览器抓取网页信息的过程。
Python中爬虫相关的包很多:urllib、requests、bs4、scrapy、pyspider 等,建议从requests+Xpath 开始,requests 负责连接网站,返回网页,Xpath 用于解析网页,便于抽取数据。
如果你用过 BeautifulSoup,会发现 Xpath 要省事不少,一层一层检查元素代码的工作,全都省略了。这样下来基本套路都差不多,一般的静态网站根本不在话下,豆瓣、糗事百科、腾讯新闻等基本上都可以上手了。
当然如果你需要爬取异步加载的网站,可以学习浏览器抓包分析真实请求或者学习Selenium来实现自动化,这样,知乎、时光网、猫途鹰这些动态的网站也可以迎刃而解。
02认识非结构化数据的存储
爬回来的数据可以直接用文档形式存在本地,也可以存入数据库中。
开始数据量不大的时候,你可以直接通过 Python 的语法或 pandas 的方法将数据存为csv这样的文件。
当然你可能发现爬回来的数据并不是干净的,可能会有缺失、错误等等,你还需要对数据进行清洗,可以学习 pandas 包的基本用法来做数据的预处理,得到更干净的数据。
03掌握各种技巧,应对特殊网站的反爬措施
当然,爬虫过程中也会经历一些绝望啊,比如被网站封IP、比如各种奇怪的验证码、userAgent访问限制、各种动态加载等等。
遇到这些反爬虫的手段,当然还需要一些高级的技巧来应对,常规的比如访问频率控制、使用代理IP池、抓包、验证码的OCR处理等等。
往往网站在高效开发和反爬虫之间会偏向前者,这也为爬虫提供了空间,掌握这些应对反爬虫的技巧,绝大部分的网站已经难不到你了。
所以有些东西看起来很吓人,但其实分解开来,也不过如此。当你能够写分布式的爬虫的时候,那么你可以去尝试打造一些基本的爬虫架构了,实现一些更加自动化的数据获取。
同时可以运用掘金网的ip代理及相关防封来辅助。(百度搜索:掘金网)