网页抓取更侧重于将网络上的非结构化数据(常见的是HTML格式)转换成为能在一个中央数据库中储存和分析的结构化数据。
需要具备一定的前端知识,最起码应该能大概看懂网页内容,像基本的html元素,css样式,javascript等,不要求熟练掌握,这些是最基础的东西。
一、基本要掌握的8个知识点
1 爬虫原理了解
互联网就是一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛。
如果把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息,可以把节点间的连线比作网页与网页之间的链接关系。
爬虫首先要做的工作就是获取网页,这里就是获取网页的源代码。
获取网页源代码后,接下来就是分析网页源代码,从中提取我们想要的数据。
提取信息后,我们可以简单保存为 TXT 文本或 JSON 文本,也可以保存到数据库,如 MySQL 和 MongoDB 等,还可保存至远程服务器。
2 Python学习
可以去网上找一些教学视频、入门学习教程等等,去看一下,然后有基础了之后还可以找一些进阶的学习视频,再打打基础。
3 HTML了解
了解网页的结构,内容等,帮助后续的数据爬取。
HTML被称为超文本标记语言,有着一系列的标签,这些标签的组合可以显示出文字,图片,视频等内容。
我们平时访问的网页,就是通过html编写的。
想要看到平常的网页,就需要为文档添加css样式,如果想要添加动画效果,图片能够自动播放或者点击出现一些反馈,这就需要用到JavaScript来编写脚本。
常用的HTML标签:
4 TCP/IP协议
了解在网络请求和网络传输上的基本原理,帮助今后写爬虫的时候理解爬虫的逻辑。
5 JavaScript
简称为js,js的运行需要靠浏览器来运行。
它是一种脚本语言,具有即时编译的特点,js可以做一些动态的操作,比如添加一个元素,改变元素的内容,改变css样式。
- JavaScript 渲染页面
现在网页越来越多地采用 Ajax、前端模块化工具来构建,整个网页可能都是由 JavaScript 渲染出来的,也就是说原始的 HTML 代码就是一个空壳。
网页请求这个js文件,获取到该文件后,便会执行其中的 JavaScript 代码,而 JavaScript 则会改变 HTML 中的节点,向其添加内容,最后得到完整的页面。
对于,可以通过selenium或者找到Ajax的请求地址就可以解决。
6 CSS
css能够对网页中的各种元素(即我们提到的HTML标签),我们可以通过它来设置背景颜色,设置元素的大小位置,设置字体的排版等等。
- 选择器
在 CSS 中,我们使用 CSS 选择器来定位节点。
例如,代码中div节点的id为container,那么就可以表示为#container,其中#开头代表选择id,其后紧跟id的名称。
如果我们想选择class为wrapper的节点,便可以使用.wrapper。
这里以点(.)开头代表选择class(我的记法是:点class,#为number的简称代表id),其后紧跟class的名称。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>This is a Demo</title>
</head>
<body>
<div id="container">
<div class="wrapper">
<h2 class="title">Hello World</h2>
<p class="text">Hello, this is a paragraph.</p>
</div>
</div>
</body>
</html>
另外,还有一种选择方式,那就是根据标签名
筛选。
例如想选择二级标题,直接用h2即可,这是最常用的3种表示,分别是根据id、class、标签名筛选,请牢记它们的写法。
7 加 密
爬取网站的时候,经常会遇到各种各样类似加密的情形,比如:字体加密,构造参数加密。
想要抓取就必须要懂得找到对应的js文件,研究这些参数是怎么构造的,现在对于更多更全的信息都是通过 App 来展示的。
一些 App 在内部实现的时候对代理加了一些校验,如绕过系统代理直接连接或者检测到了使用了代理,直接拒绝连接。
这需要考虑使用 Wireshark、Tcpdump 在更底层的协议上抓包。
8 抓包分析
要会进行抓包分析,会使用浏览器自带的开发者工具。
网页中有些数据是动态加载的,只在请求网页时才加载数据,在网页源码中是不显示的,所以你需要会进行抓包分析,解析json数据等。
我们经常模拟登录时,也需要进行抓包分析,需要post提交哪些内容等,只有在抓包分析后,才能构建相关提交数据:
其次就是要梳理一下爬虫的思路;
简单的说,就是你想要抓取一个网站的内容时,需要怎么一步步做好,需要现有一个大的整体的架构,才能进一步做好接下来的工作。
二、其他需要注意的
检查robots.txt
许多网站会将爬取规则和限制写在 robots.txt 里,这个文件通常是在根域名下,这个文件就是给 网络爬虫 来了解爬取该网站时存在哪些限制。
Q:如何查看这个 robots.txt 文件?
A:你只需要在 目标网站站点域名 后面加上 robots.txt 即可。
例如:http://www.example.com/robots.txt
robots.txt 里一般会规定哪些网页不允许被自动抓取,或者限定某个页面被机器人访问的频率。
虽然大部分人不理会这些,但还是要先看一看它的内容,我们还是尽量遵守robots.txt 文件里面的要求为好。
不管什么用户,两次爬取请求之间的间隔时间不可以小于 5秒钟,否则你访问的这个网站会将网页自动跳整到 /trap 链接。
也就是说:网站服务器封禁了你的IP,如果你行为恶劣,可能会对你的IP封禁更长的时间,甚至是永久封禁!
小心HTML里的坑
HTML 标签中可能包含 id 或 class,或二者兼有。
HTML id 是一个独一无二的标记,而 HTML class 可能在多个元素中被重用。
class 名或元素内容可能会改变,而这种改变可能会让你的代码崩溃,或是返回错误的结果。
一般来说,有两种办法避免这种情况出现:
① 采用 id 来获取元素内容,而不是 class,因为 id 一般来说不那么容易改变。
② 记得检查返回值,如果返回了 None,那很可能有什么地方出了问题。
不过,因为有一些 class 可能并不总是出现,相关的元素并不一定在每个列表中都有,所以你需要统计某个元素在所有列表中出现的比例。
比如计算返回 None 的次数;
如果每次都返回 None,那也许你需要检查代码或者是 HTML 源码,看看是不是这个元素在网站的 HTML 中就已经改变了。
对User agent伪装
每当你访问一个网站时,网站都会通过浏览器的 user agent 获取到你的浏览器信息。
有些网站如果没收到 user agent 信息,就不会返回任何内容,还有些网站会根据不同的 user agent,给不同的浏览器提供不同的内容。
网站并不会阻止正常用户的访问,但如果你用同一个 user agent 发起每秒 200 次的请求,这就有问题了吧?
可以通过 user_agent 库,产生(几乎是)随机的 user agent,也可以自定义一个特殊的 user agent。
是否被屏蔽了?
如果你拿到的返回值经常是 404(找不到页面)、403(被禁止)、408(访问超时),就应该考虑你是不是被这个站点屏蔽了。
防止被禁掉
短时间内频繁的访问服务器,很有可能会被服务器识别为爬虫,禁掉IP。
这个时候你就需要使用IP代理池等,尽可能不被服务器发现。
检查网站地图
网站提供的 Sitemap 文件(即 网站地图),它提供了网站站点里面所有页面的链接,它们组成了这个 Sitemap 文件。
我们无须爬取某个网站站点里面的每一个网页,网站提供的 Sitemap 文件 帮助了我们的网络爬虫定为网站最新的内容。
虽然Sitemap文件提供了一种爬取网站的有效方式,但是我们仍需要对其谨慎处理。
因为该文件经常存在缺失、过期或者不完整的问题。
存储数据
爬取下来的数据,如果数据量大的话,就需要了解一些常用的数据库的使用,像mysql,mongodb等,方便查询也方便管理。
爬虫框架
最后就是学一些爬虫常用的框架;
可以明显提高开发效率,避免重复造轮子, 像python的开源爬虫框架scrapy等,使用起来也更快捷。
关于Python学习指南
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你,干货内容包括:
👉Python所有方向的学习路线👈
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉Python学习开发工具👈
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
👉Python入门学习视频👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
👉Python实战练手案例&源码👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉100道Python练习题👈
检查学习结果。
👉Python大厂面试资料👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉Python副业兼职学习路线👈
👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费
】
读者福利:CSDN大礼包:《Python小白从入门到精通全套学习资料》免费分享 安全链接免费领取
![](https://img-blog.csdnimg.cn/img_convert/ecfd36ba7edb411cedff2d1743e641bd.jpeg)