2019年,Python无论是在编程语言排行榜上,还是在互联网行业内,都饱受争议。在Java还是Python中流行也是一个有争议的话题。
随着信息时代的迭代更新和人工智能的兴起,Python编程语言也被人们广泛研究。Python数据分析,Python web全栈,Python自动运维等等都是很热门的,包括Python爬虫。但是很多人觉得Python爬虫不合法,也在想到底要不要学。之前有一篇文章很火,就是“公司200多人因为写了一个爬虫就被抓了!”,文章写道,因为一个技术人员抓取数据被抓,爬虫真的违法吗?今天就来探索一下。

目前互联网世界已经通过自己的协议为爬虫建立了一定的道德标准,但法律部分还在建立和完善中。那么什么是机器人协议呢?
机器人协议
Robots协议的全称是“网络爬虫排除标准”。网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不可以抓取。这个协议是互联网中一个常见的道德准则。虽然没有写进法律,但是每个爬虫都应该遵守这个协议。
让我们以Taobao.com的robots.txt为例来介绍一下。
User-agent: Baiduspider # crawler引擎Allow:/article # Allow access/article . htm,/article/12345 . com Allow:/OS HTML Allow:/ershou disallow:/product/# Prohibit access/product/12345 . com disallow:/#禁止访问除Allow指定页面以外的所有页面。用户代理:Googlebot # Google爬虫引擎allow:/article load:/oshtmlload:/product # allow访问/product.htm,/product/12345 . com allow:/spuAllow:/dianpulow:/wenzhang allow:/overseaadisallow:/
在上面的robots文件中,淘宝指定用户代理是爬虫引擎。
机器人可以访问以Allow条目的值开头的URL。比如allow:/article允许爬虫引擎访问/article.htm、/article/12345.com等。
爬虫引擎不允许访问以不允许条目开始的链接。比如disallow:/product/不允许爬虫引擎访问/product/12345.com等。
最后一行disAllow:/禁止crawler访问除Allow指定的页面之外的所有页面。
所以当你在搜索“淘宝”时,搜索结果下方会出现小字:“由于本网站的robots.txt文件有限制,系统无法提供本页面的内容描述”,如图。作为搜索引擎,它遵守淘宝的robot.txt协议,所以你无法从网上搜索到淘宝内部的商品信息。
淘宝的Robots协议对谷歌爬虫区别对待。与爬虫不同,它允许Google爬虫抓取产品页面allow:/product。所以当你在谷歌搜索“淘宝iphone7”的时候,就可以在淘宝找到产品,如图。
当您抓取网站数据时,无论是否供个人使用,您都应该遵守Robots协议。
加入VIP会员,可以免费学习几百本电子书,上千门课程。
网络爬虫的约束条件
除了上面提到的Robots协议,我们还得在使用网络爬虫时限制自己:太快或太频繁的网络爬虫会给服务器造成很大压力,网站可能会屏蔽你的IP,甚至采取进一步的法律行动。因此,你需要约束你的网络爬虫行为,将请求速度限制在一个合理的范围内。
在爬网站时,需要限制自己的爬虫,遵守Robots协议,限制爬虫的速度;使用数据时,必须遵守网站的知识产权。
所以只要你合理利用,就不会违法,爬虫还是可以学习的。毕竟爬虫对于数据分析真的很有用,那么爬虫应该如何学习呢?今天我就教大家写一个简单的爬虫!
编写第一个简单的爬虫。
第一步:获取页面
#!/usr/bin/python #编码:UTF-8导入请求#导入包请求link = " http://www . Santos Tang . com/" #将链接定义为目标网页地址#定义请求头的浏览器代理,伪装成浏览器头= { ' user-agent ':' Mozilla/5.0 Gecko/2009 12 01 Firefox/3 . 5 . 6 ' } r = requests . get #请求网页打印#r.text是获取的网页内容代码。
上面的代码可以获得博客主页的HTML代码。HTML是一种用来描述网页的语言,也就是说网页所呈现的内容都在HTML代码的背后。如果不熟悉HTML,可以先去w3school学习一下。你需要花几个小时来学习HTML。
在上面的代码中,首先import requests引入包请求,然后获取网页。
首先,将link定义为目标web地址。

然后使用headers定义请求头的浏览器代理并伪装它。
是请求的响应回复对象,从中我们可以得到想要的信息。R.text是获取的网页内容代码。
运行上述代码得到的结果如图所示。
第二步:提取需要的数据。
#!/usr/bin/python #编码:UTF-8来自bs4的导入请求导入beautiful soup #从BS4库导入beautiful soup = " http://www . Santos Tang . com/" headers = { ' user-agent ':' Mozilla/5.0 Gecko/2009 12 01 Firefox/3 . 5 . 6 ' } r = requests . get soup = beautiful soup #使用beautiful soup来解析#找到第一个文章标题,找到类为“post-title”的h1元素,提取A,提取A内的字符串
得到整个页面的HTML代码后,我们需要从整个网页中提取第一篇文章的标题。
这里,库BeautifulSoup用于解析页面,这将在第4章中详细解释。首先,你需要导入这个库,然后将HTML代码转换成soup对象,然后使用SOUP。找到。a .文本。Stripe获取第一篇文章的标题并打印出来。
Soup.find.a.text.strip的意思是,找到第一篇文章的标题,定位到类为“post-title”的h1元素,提取A元素,提取A元素内部的字符串。strip移除左右空箱。
对于初学者来说,使用BeautifulSoup从网页中提取所需数据更容易。
那么,我们如何从这么长的代码中准确找到标题的位置呢?
下面隆重介绍一下Chrome浏览器的“检查”功能。下面是查找所需元素的步骤。
步骤01
用Chrome浏览器打开博客主页www.santostang.com。右键点击网页,在弹出的快捷菜单中点击“检查”命令,如图。
步骤02
出现“检查元素”页面,如下图所示。单击左上角的鼠标按钮,然后在页面上单击所需的数据。下列元素将出现在相应代码所在的位置,所需的元素将被定位。
步骤03
找到代码中标记为蓝色的地方,并学习echarts的注意事项——同一页上有多个图表。我们可以用soup.find.a.text.strip来提取这篇博文的标题。
第三步:存储数据。
从bs4导入请求导入美汤#从bs4库导入美汤= " http://www . Santos Tang . com/" headers = { ' user-agent ':' Mozilla/5.0 gecko/2009 12 01 Firefox/3 . 5 . 6 ' } r = requests . get soup = beautiful soup # parse title = soup . find . a . text . strip print #用美汤打开一个空 white txt,然后用open写成f: f.write f
存储本地txt文件非常简单。在第二步的基础上,添加2行代码,将这个字符串保存在文本中,存储在本地。txt文件地址应该与Python文件在同一个文件夹中。
回到文件夹,打开title.txt文件,内容如图。
第一个爬虫就是这么写的。你学会了吗?暂时没学过也没关系,可以慢慢学~以上内容是从Python Web Crawler上拉下来的从初学者到练习【文末有福利】!

扫码加入VIP会员免费阅读。
内容介绍:
利用Python编写网络爬虫获取互联网上的大数据是目前的热门话题。本书由三部分组成:基础部分、高级部分和项目实践。基础部分主要介绍了爬虫的三个步骤——获取网页、解析网页和存储数据。通过众多实例的讲解,读者可以从基础内容系统地学习爬虫技术,在实践中提高Python爬虫水平。高级部分包括多线程并发并行爬虫、分布式爬虫、改变IP等。,帮助读者进一步提高爬虫水平。实践部分利用本书介绍的爬虫技术爬取了几个真实的网站,让读者看完本书后可以根据自己的需求编写爬虫程序。
推荐理由:
基础知识+完整知识模块+4个实际案例的教学,让读者快速掌握爬虫程序的编写,快速成长为爬虫高手。


