Python 爬虫入门实战01

news/2024/7/19 9:45:47 标签: python, 爬虫, 开发语言

1、什么是爬虫

网络爬虫又称网络蜘蛛、网络机器人,它是一种按照一定的规则自动浏览、检索网页信息的程序或者脚本。网络爬虫能够自动请求网页,并将所需要的数据抓取下来。通过对抓取的数据进行处理,从而提取出有价值的信息。

2、爬虫分类

爬虫可分为三大类:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫

通用网络爬虫:是搜索引擎的重要组成部分,上面已经进行了介绍,这里就不再赘述。通用网络爬虫需要遵守 robots 协议,网站通过此协议告诉搜索引擎哪些页面可以抓取,哪些页面不允许抓取。

robots 协议:是一种“约定俗称”的协议,并不具备法律效力,它体现了互联网人的“契约精神”。行业从业者会自觉遵守该协议,因此它又被称为“君子协议”。

聚焦网络爬虫:是面向特定需求的一种网络爬虫程序。它与通用爬虫的区别在于,聚焦爬虫在实施网页抓取的时候会对网页内容进行筛选和处理,尽量保证只抓取与需求相关的网页信息。聚焦网络爬虫极大地节省了硬件和网络资源,由于保存的页面数量少所以更新速度很快,这也很好地满足一些特定人群对特定领域信息的需求。

增量式网络爬虫:是指对已下载网页采取增量式更新,它是一种只爬取新产生的或者已经发生变化网页的爬虫程序,能够在一定程度上保证所爬取的页面是最新的页面。

3、爬虫应用

随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战,因此爬虫应运而生,它不仅能够被使用在搜索引擎领域,而且在大数据分析,以及商业领域都得到了大规模的应用。

1) 数据分析

在数据分析领域,网络爬虫通常是搜集海量数据的必备工具。对于数据分析师而言,要进行数据分析,首先要有数据源,而学习爬虫,就可以获取更多的数据源。在采集过程中,数据分析师可以按照自己目的去采集更有价值的数据,而过滤掉那些无效的数据。

2) 商业领域

对于企业而言,及时地获取市场动态、产品信息至关重要。企业可以通过第三方平台购买数据,比如贵阳大数据交易所、数据堂等,当然如果贵公司有一个爬虫工程师的话,就可通过爬虫的方式取得想要的信息。

爬虫是一把双刃剑,它给我们带来便利的同时,也给网络安全带来了隐患。有些不法分子利用爬虫在网络上非法搜集网民信息,或者利用爬虫恶意攻击他人网站,从而导致网站瘫痪的严重后果。

为了限制爬虫带来的危险,大多数网站都有良好的反爬措施,并通过 robots.txt 协议做了进一步说明,下面是淘宝网 robots.txt 的内容:

User-agent: Baiduspider 
Disallow: /baidu Disallow: /s? 
Disallow: /ulink? 
Disallow: /link? 
Disallow: /home/news/data/ 
Disallow: /bh
.....
User-agent: * 
Disallow: /

从协议内容可以看出,淘宝网对不能被抓取的页面做了规定。因此大家在使用爬虫的时候,要自觉遵守 robots 协议,不要非法获取他人信息,或者做一些危害他人网站的事情。

为什么python

Python作为一门简洁优雅的编程语言,因其丰富的第三方库和易读性,成为了爬虫开发的热门选择。主要是例程多,学习资源丰富,拿来主义。

不止 Python 这一种语言可以做爬虫,诸如 PHP、Java、C/C++ 都可以用来写爬虫程序,但是相比较而言 Python 做爬虫是最简单的。下面对它们的优劣势做简单对比:

PHP:对多线程、异步支持不是很好,并发处理能力较弱;Java 也经常用来写爬虫程序,但是 Java 语言本身很笨重,代码量很大,因此它对于初学者而言,入门的门槛较高;C/C++ 运行效率虽然很高,但是学习和开发成本高。写一个小型的爬虫程序就可能花费很长的时间。

而 Python 语言,其语法优美、代码简洁、开发效率高、支持多个爬虫模块,比如 urllib、requests、Bs4 等。Python 的请求模块和解析模块丰富成熟,并且还提供了强大的 Scrapy 框架,让编写爬虫程序变得更为简单。因此使用 Python 编写爬虫程序是个非常不错的选择。

爬虫程序与其他程序不同,它的的思维逻辑一般都是相似的, 所以无需我们在逻辑方面花费大量的时间。下面对 Python 编写爬虫程序的流程做简单地说明:

  • 先由 urllib 模块的 request 方法打开 URL 得到网页 HTML 对象。
  • 使用浏览器打开网页源代码分析网页结构以及元素节点。
  • 通过 Beautiful Soup 或则正则表达式提取数据。
  • 存储数据到本地磁盘或数据库。

环境配置与基本工具

1. Python环境配置

安装pycharm+anaconda,这个教程比较多,随便找一个。


http://www.niftyadmin.cn/n/1542653.html

相关文章

Java编程入门与应用 P169——高手带你做:Character类的应用

Java编程入门与应用 P169——高手带你做:Character类的应用 创建两个Character对象,然后调用equals()方法比较是否相等;然后将这两个对象分别转换成小写形式,进行比较,在通过equals方法比较两个…

Java编程入门与应用 P169——成长任务2:Boolean的应用

Java编程入门与应用 P169——成长任务2:Boolean的应用 * 实现通过字符型变量创建boolean值,再将其转换成字符串输出,然后观察输出后的字符串与创建Boolean对象时给定的参数是否相同 /*** Java编程入门与应用 P169——成长任务2:…

简单的ASP生成静态html

<% filenameyear(now)&month(now)&day(now)&minute(now)&".htm" 根据当前时间生成文件名if request("body")<>"" then set objfso Server.CreateObject("Scripting.FileSystemObject") 创建一个fso实例set …

省选前总结

主要是给自己的&#xff0c;一些易忘知识点的总结吧。 Tarjan求桥及割点 割点&#xff1a;根的有俩儿子就是割点&#xff0c;其他的点如果子树中有儿子连接不到它祖先那里去就是割点&#xff08;即存在low[son[u]]>dfn[u]&#xff09;。 桥&#xff1a;结点u的子结点v的后代…

Java编程入门与应用 P173——例7-2(创建包含5个元素的int类型的属猪,然后分别将元素的值设置为1、2、3、4、5、8)

Java编程入门与应用 P173——例7-2 创建包含5个元素的int类型的属猪&#xff0c;然后分别将元素的值设置为1、2、3、4、5、8创建一维数组的格式&#xff1a;数据类型[] 属数组名;分配空间格式&#xff1a;数据类型[] 数组名 new 数据类型[数组长度]; /*** Java编程入门与应用…

jQuery1.2 API 中文版手册(chm格式)

作者/译者&#xff1a;Shawphychm格式编译&#xff1a;liaoyizhi(ゞ智者.千虑)下载地址&#xff1a; http://files.cnblogs.com/Liaoyizhi/jQuery1.2API.rar 1.3版下载链接&#xff1a;http://www.cnblogs.com/Liaoyizhi/archive/2009/11/13/jQuery1_3-API.html 转载于:https:/…

Java编程入门与语言 P173——例7-3(更改例7-2的中的代码,使用new直接指定数组元素的值)

Java编程入门与语言 P173——例7-3 更改例7-2的中的代码&#xff0c;使用new直接指定数组元素的值格式&#xff1a;数据类型[] 数组名 new 数据类型[]{值1, 值2, 值3, …}; /*** Java编程入门与语言 P173——例7-3* 更改例7-2的中的代码&#xff0c;使用new直接指定数组元素…

巩固老本,你被忽悠了没?

代码如下&#xff1a; #include<iostream> using namespace std; int test(int &a) { //int a2; return (a--); } void main() { int a2; cout << test(a) << endl; cout << a << endl; } 看看答案是多少呢&#xff…