教你如何编写第一个爬虫(教你如何编写第一个爬虫程序)

2019年不管是编程语言排行榜还是在互联网行业,Python一直备受争议,到底是Java热门还是Python热门也是一直让人争吵的话题。

随着信息时代的迭代更新,人工智能的兴起,Python编程语言也随之被人们广泛学习,Python数据分析、Python web全栈、Python自动化运维等等都很受欢迎,其中还包括了Python爬虫。但是很对人觉得Python爬虫是违法的行为,也在怀疑自己到底要不要学爬虫,之前有一篇文章特别火,就是《 只因写了一段爬虫,公司200多人被抓!》,文章里写了因为一名技术人员因爬取数据被抓,那么爬虫真的违法吗?今天我们来探索一下。

目前互联网世界针对爬虫这一块已经通过自身的协议建立起一定的道德规范(Robots协议),但法律部分还在建立和完善中。那么Robots协议是什么呢?

Robots协议

Robots协议(爬虫协议)的全称是网络爬虫排除标准(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。该协议是国际互联网界通行的道德规范,虽然没有写入法律,但是每一个爬虫都应该遵守这项协议。

下面以淘宝网的robots.txt为例进行介绍。

User-agent: Baiduspider #百度爬虫引擎Allow: /article #允许访问/article.htm、/article/12345.comAllow: /osHTML Allow: /ershouDisallow: /product/ #禁止访问/product/12345.comDisallow: / #禁止访问除Allow规定页面外的其他所有页面
User-Agent: Googlebot #谷歌爬虫引擎Allow: /articleAllow: /oshtmlAllow: /product #允许访问/product.htm、/product/12345.comAllow: /spuAllow: /dianpuAllow: /wenzhangAllow: /overseaDisallow: /

在上面的robots文件中,淘宝网对用户代理为百度爬虫引擎进行了规定。

以Allow项的值开头的URL是允许robot访问的。例如,Allow:/article允许百度爬虫引擎访问/article.htm、/article/12345.com等。

以Disallow项为开头的链接是不允许百度爬虫引擎访问的。例如,Disallow:/product/不允许百度爬虫引擎访问/product/12345.com等。

最后一行,Disallow:/禁止百度爬虫访问除了Allow规定页面外的其他所有页面。

因此,当你在百度搜索淘宝的时候,搜索结果下方的小字会出现:由于该网站的robots.txt文件存在限制指令(限制搜索引擎抓取),系统无法提供该页面的内容描述,如图所示。百度作为一个搜索引擎,良好地遵守了淘宝网的robot.txt协议,所以你是不能从百度上搜索到淘宝内部的产品信息的。

淘宝的Robots协议对谷歌爬虫的待遇则不一样,和百度爬虫不同的是,它允许谷歌爬虫爬取产品的页面Allow:/product。因此,当你在谷歌搜索淘宝iphone7的时候,可以搜索到淘宝中的产品,如图所示。

当你爬取网站数据时,无论是否仅供个人使用,都应该遵守Robots协议。

加入VIP会员,上百本电子书、上千门课程等你免费学

网络爬虫的约束

除了上述Robots协议之外,我们使用网络爬虫的时候还要对自己进行约束:过于快速或者频密的网络爬虫都会对服务器产生巨大的压力,网站可能封锁你的IP,甚至采取进一步的法律行动。因此,你需要约束自己的网络爬虫行为,将请求的速度限定在一个合理的范围之内。

爬取网站的时候需要限制自己的爬虫,遵守Robots协议和约束网络爬虫程序的速度;在使用数据的时候必须遵守网站的知识产权。

所以只要你合理利用就不会违法,爬虫还是可以学的哦,毕竟爬虫对数据分析真的非常有用,那么爬虫该怎么学呢?今天来教大家编写一个简单的爬虫!

编写第一个简单的爬虫

第一步:获取页面

#!/usr/bin/python# coding: utf-8
import requests #引入包requestslink = "http://www.santostang.com/" #定义link为目标网页地址# 定义请求头的浏览器代理,伪装成浏览器headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
r = requests.get(link, headers= headers) #请求网页print (r.text) #r.text是获取的网页内容代码

上述代码就能获取博客首页的HTML代码,HTML是用来描述网页的一种语言,也就是说网页呈现的内容背后都是HTML代码。如果你对HTML不熟悉的话,可以先去w3school(http://www.w3school.com.cn/html/index.asp)学习一下,大概花上几个小时就可以了解HTML。

在上述代码中,首先import requests引入包requests,之后获取网页。

(1)首先定义link为目标网页地址。

(2)之后用headers来定义请求头的浏览器代理,进行伪装

(3)r是requests的Response回复对象,我们从中可以获取想要的信息。r.text是获取的网页内容代码。

运行上述代码得到的结果如图所示。

第二步:提取需要的数据

#!/usr/bin/python# coding: utf-8
import requestsfrom bs4 import BeautifulSoup #从bs4这个库中导入BeautifulSoup
link = "http://www.santostang.com/"headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'} r = requests.get(link, headers= headers)
soup = BeautifulSoup(r.text, "html.parser") #使用BeautifulSoup解析
#找到第一篇文章标题,定位到class是"post-title"的h1元素,提取a,提取a里面的字符串,strip去除左右空格title = soup.find("h1", class_="post-title").a.text.stripprint (title)

在获取整个页面的HTML代码后,我们需要从整个网页中提取第一篇文章的标题。

这里用到BeautifulSoup这个库对页面进行解析,BeautifulSoup将会在第4章进行详细讲解。首先需要导入这个库,然后把HTML代码转化为soup对象,接下来用soup.find(h1,class_=post-title).a.text.strip得到第一篇文章的标题,并且打印出来

soup.find(h1,class_=post-title).a.text.strip的意思是,找到第一篇文章标题,定位到class是"post-title"的h1元素,提取a元素,提取a元素里面的字符串,strip去除左右空格。

对初学者来说,使用BeautifulSoup从网页中提取需要的数据更加简单易用。

那么,我们怎么从那么长的代码中准确找到标题的位置呢?

这里就要隆重介绍Chrome浏览器的检查(审查元素)功能了。下面介绍找到需要元素的步骤。

步骤01

使用Chrome浏览器打开博客首页www.santostang.com。右击网页页面,在弹出的快捷菜单中单击检查命令,如图所示。

步骤02

出现如下图所示的审查元素页面。单击左上角的鼠标键按钮,然后在页面上单击想要的数据,下面的Elements会出现相应的code所在的地方,就定位到想要的元素了。

步骤03

在代码中找到标蓝色的地方,为echarts学习笔记(2)同一页面多图表。我们可以用soup.find("h1",class_="post-title").a.text.strip提取该博文的标题。

第三步:存储数据

import requestsfrom bs4 import BeautifulSoup #从bs4这个库中导入BeautifulSoup
link = "http://www.santostang.com/"headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'} r = requests.get(link, headers= headers)
soup = BeautifulSoup(r.text, "html.parser") #使用BeautifulSoup解析title = soup.find("h1", class_="post-title").a.text.stripprint (title)
# 打开一个空白的txt,然后使用f.write写入刚刚的字符串titlewith open('title_test.txt', "a+") as f: f.write(title)

存储到本地的txt文件非常简单,在第二步的基础上加上2行代码就可以把这个字符串保存在text中,并存储到本地。txt文件地址应该和你的Python文件放在同一个文件夹。

返回文件夹,打开title.txt文件,其中的内容如图所示。

以上就是编写第一个爬虫的方法,你们学会了吗?暂时没学会也没关系,你可以慢慢学哦~以上内容自《Python网络爬虫从入门到实践(第2版)》【文末有福利】往下拉!

内容简介:使用Python编写网络爬虫程序获取互联网上的大数据是当前的热门专题。本书内容包括三部分:基础部分、进阶部分和项目实践。基础部分(第1~7章)主要介绍爬虫的三个步骤获取网页、解析网页和存储数据,并通过诸多示例的讲解,让读者能够从基础内容开始系统性地学习爬虫技术,并在实践中提升Python爬虫水平。进阶部分(第8~13章)包括多线程的并发和并行爬虫、分布式爬虫、更换IP等,帮助读者进一步提升爬虫水平。项目实践部分(第14~17章)使用本书介绍的爬虫技术对几个真实的网站进行抓取,让读者能在读完本书后根据自己的需求写出爬虫程序。

推荐理由:

基础知识+完整的知识模块+4个实践案例的教学,让读者快速掌握爬虫程序的编写,快速成长为爬虫高手

以上书籍均已加入到VIP会员卡权益,只要拥有这张VIP会员卡即可免费阅读上百本电子书,还有上千门优质课程免费看哦,快扫码查看!

福利

参与方式:只要在本文留言参与话题技术书籍上,你会选择购买纸质书籍还是电子书籍,为什么呢?即可有机会获得价值129元的可擦笔记本一个,只有2个名额哦~

获奖公布时间:2月21日14:00

免责声明:本文作者:“CSDN”,版权归作者所有,观点仅代表作者本人。本站仅提供信息存储分享服务,不拥有所有权。信息贵在分享,如有侵权请联系ynstorm@foxmail.com,我们将在24小时内对侵权内容进行删除。
(171)
百度搜索引擎原理,抓取建库,Spider
上一篇 2024年02月23日
ip地址怎么设置(怎样设置自己的ip地址
下一篇 2024年02月23日

相关推荐

  • vivo影像寻城记(手机拍全景照片怎么拍)

    首先我们打开vivo手机在手机桌面上找到照相机图标,点击打开照相机,在照相机页面我们点击全景两个字,然后我们就能打开全景模式,然后我们将摄像头返回到后摄像头,然后对中你想要拍的地方,点击拍照标准就可以拍了...

    2023年10月25日
  • xp仿win7桌面主题包(怎样给电脑桌面上放一张图片)

    如果您的Windows7系统显示为XP界面,可能是因为您的电脑上安装了兼容性模式,或者出现了主题错误等问题。以下是一些可能的解决方法:...

    2023年11月11日
  • zip格式(怎么把文件压缩打包成Zip文件)

    可以通过常见的压缩软件,比如Winrar、好压等软件实现解压缩文件;下载安装好压缩软件之后,右键点击需要的文件和文件夹,选择【添加到文件名.Zip】,就可以完成压缩。以下是详细介绍:1、目前我们常见和常用的文件压缩包格式为.rar和.zip,...

    2023年11月24日
  • g530cpu参数(ih61m主板支持最高的cpu是多少)

    H61主板是能够支持英特尔的酷睿i系列LGA1155处理器,具体来说就是支持赛扬G530处理器、Intel奔腾G620、G630、G840处理器;主流级别的Intel酷睿i32100、Intel酷睿i32120处理器;也可以支持中高端Inte...

    2023年11月25日
  • gt210怎么样(gt430显卡相当于什么级别)

    i32100使用的是HDGraphics2000的集成显示核心,性能相当于GT210低端显卡,GT430性能完秒GT210的,还有就是GT430也是秒杀GT610的,GT430相当于GT630D3性能一样,GT430属于中低端显卡、秒杀市场上...

    2023年11月26日
  • 天语v958(手机电视信号接收器)

    国内两种手机不通过网络看电视,一种是有模拟电视接收功能,如NEC一款有,或某些山寨机,一种是数字的需要硬件支持,比如酷派F600,智能机如F800联想的TD30t,TD36T天语V958等等,有很多。还有少部分双模接收的,比较少见。如果只是想...

    2023年12月03日
  • 国务院办公厅关于依托全国一体化政务服务平台建立政务服务效能提升常态化工作机制的意见

    国务院办公厅关于依托全国一体化政务服务平台建立政务服务效能提升常态化工作机制的意见国办发〔2023〕29号各省、自治区、直辖市人民政府,国务院各部委、各直属机构:近年来,国务院办公厅会同各地区各有关部门,深入贯彻习近平总书记关于网络强国的重要...

    2024年01月23日
  • A股并不象网上说的那么熊

    A股这一轮漫漫熊市让很多股民们彻底的失去了信心。网上谩骂声嘲讽声不绝与耳。献计献策者也是多方寻找原因。其实,我们从年线趋势来看,虽然总体不尽如人意,但要说是超级大熊,似乎也有夸大之嫌。口说无凭,咱直接上图:看到了吧,创业板近三年是断崖势下跌。...

    2024年01月24日
  • 500万智能追踪摄像头 惠普战66六代锐龙版如何带来更好的会议效果?

    惠普战66系列可以说是轻薄办公本中的一款明星产品,从2017年到现在,这款笔记本凭借齐全的接口、主流的性能、充足的续航时间以及较高的性价比获得了无数办公族的喜爱。在刷微博、朋友圈刷到大家分享的一些关于工作的照片里,经常能看到战66的出镜,看得...

    2024年02月17日
  • 麦博fc361(麦博梵高FC361W有什么样的介绍)

    麦博梵高fc361w的卫星箱比较长,卫星箱喇叭的位置比较高,高度更加靠近听音者的耳朵,听感更加科学,能营造出广阔的声场;而漫步者C2的卫星箱则是比较传统的小四方形,但c2的优点是音箱为全木质的,播放音乐是谐振很少;低音方面,漫步者c2要比fc...

    2024年03月26日
返回顶部