这篇 Python 爬虫教程主要讲解以下 5 部分

  1. 了解网页结构;
  2. 使用 requests 库抓取网站数据;
  3. 使用 Beautiful Soup 解析网页;
  4. 清洗和组织数据;
  5. 爬虫攻防战;

了解网页结构

网页一般由三部分组成,分别是 HTML(超文本标记语言)、CSS(层叠样式表)和 JScript(活动脚本语言)。

  • HTML 负责定义网页的内容
  • CSS 负责描述网页的布局
  • JavaScript 负责网页的行为

HTML

HTML 是网页的基本结构,它相当于人体的骨骼结构。网页中同时带有“<”、“>”符号的都属于 HTML 标签。常见的 HTML 标签如下所示:

<!DOCTYPE html> 声明为 HTML5 文档
<html>..</html> 是网页的根元素
<head>..</head> 元素包含了文档的元(meta)数据,如 <meta charset="utf-8"> 定义网页编码格式为 utf-8。
<title>..<title> 元素描述了文档的标题
<body>..</body> 表示用户可见的内容
<div>..</div> 表示框架
<p>..</p> 表示段落
<ul>..</ul> 定义无序列表
<ol>..</ol>定义有序列表
<li>..</li>表示列表项
<img src="" alt="">表示图片
<h1>..</h1>表示标题
<a href="">..</a>表示超链接

代码如下

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Python</title>
</head>
<body>
<a href="https://blog.csdn.net/qq_45719125">点击访问</a>
<h1>CSDN mei0351</h1>
<h2>Python爬虫</h2>
<div>
<p>认识网页结构</p>
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
</ul>
</div>
</body>
</html>

关于爬虫的合法性

几乎每一个网站都有一个名为 robots.txt 的文档,当然也有部分网站没有设定 robots.txt。对于没有设定 robots.txt 的网站可以通过网络爬虫获取没有口令加密的数据,也就是该网站所有页面数据都可以爬取。如果网站有 robots.txt 文档,就要判断是否有禁止访客获取的数据。
以B站为例,在浏览器中访问 https://www.bilibili.com/robots.txt,如图所示。


User-Agent:*

Disallow:/

除前面指定爬虫外,不允许其他爬虫获取任何数据。

使用requests库请求网站

网页请求的过程分为两个环节:

  1. Request (请求):每一个展示在用户面前的网页都必须经过这一步,也就是向服务器发送访问请求。
  2. Response(响应):服务器在接收到用户的请求后,会验证请求的有效性,然后向用户(客户端)发送响应的内容,客户端接收服务器响应的内容,将内容展示出来,就是我们所熟悉网页请求的方式也分为两种:
  3. GET:最常见的方式,一般用于获取或者查询资源信息,也是大多数网站使用的方式,响应速度快。
  4. POST:相比 GET 方式,多了以表单形式上传参数的功能,因此除查询信息外,还可以修改信息。

使用GET方式抓取数据

在Pycharm中输入如下代码

import requests        #导入requests包
url = 'http://www.bilibili.com/'
strhtml = requests.get(url)        #Get方式获取网页数据
print(strhtml.text)

使用 POST 方式抓取数据

使用BeautifulSoap解析网站

清洗和组织数据

爬虫攻防战

爬虫是模拟人的浏览访问行为,进行数据的批量抓取。当抓取的数据量逐渐增大时,会给被访问的服务器造成很大的压力,甚至有可能崩溃。换句话就是说,服务器是不喜欢有人抓取自己的数据。那么,网站方面就会针对这些爬虫者,采取一些反爬策略。
服务器第一种识别爬虫的方式就是通过检查连接的 useragent 来识别到底是浏览器访问,还是代码访问的。如果是代码访问的话,访问量增大时,服务器会直接封掉来访 IP。
那么应对这种初级的反爬机制,我们应该采取何种举措?
在进行访问时,我们在开发者环境下不仅可以找到 URL、Form Data,还可以在 Request headers 中构造浏览器的请求头,封装自己。服务器识别浏览器访问的方法就是判断 keyword 是否为 Request headers 下的 User-Agent。

因此,我们只需要构造这个请求头的参数。创建请求头部信息即可,代码如下:

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
response = request.get(url,headers=headers)

写到这里,很多读者会认为修改 User-Agent 很太简单。确实很简单,但是正常人1秒看一个图,而个爬虫1秒可以抓取好多张图,比如 1 秒抓取上百张图,那么服务器的压力必然会增大。也就是说,如果在一个 IP 下批量访问下载图片,这个行为不符合正常人类的行为,肯定要被封 IP。
其原理也很简单,就是统计每个IP的访问频率,该频率超过阈值,就会返回一个验证码,如果真的是用户访问的话,用户就会填写,然后继续访问,如果是代码访问的话,就会被封 IP。这个问题的解决方案有两个,第一个就是常用的增设延时,每 3 秒钟抓取一次,代码如下:

import time
time.sleep(3)

但是,写爬虫的目的是为了高效批量抓取数据,这里设置 3 秒钟抓取一次,效率未免太低。其实,还有一个更重要的解决办法,那就是从本质上解决问题。不管如何访问,服务器的目的就是查出哪些为代码访问,然后封锁 IP。解决办法:为避免被封 IP,在数据采集时经常会使用代理。当然,requests 也有相应的 proxies 属性。首先,构建自己的代理 IP 池,将其以字典的形式赋值给 proxies,然后传输给 requests,代码如下:

proxies={"http":"http://10.10.1.10:3128","https":"http://10.10.1.10:1080",
}
response = requests.get(url, proxies=proxies)

附言:

本文仅对 Python 爬虫及实现过程做了简明扼要地介绍,仅能使初学者对 python 爬虫有一个粗浅的认识,并不能让你完全掌握 Python 爬虫。

Python爬虫简单入门教程相关推荐

  1. 如何自学Python爬虫,python爬虫快速入门教程

    如何自学Python爬虫?在大家自学爬虫之前要解决两个常见的问题,一是爬虫到底是什么?二是问什么要用Python来做爬虫?爬虫其实就是自动抓取页面信息的网络机器人,至于用Python做爬虫的原因,当然 ...

  2. 最好的python爬虫 小白入门教程

    Python爬虫入门教程:超级简单的Python爬虫教程 这是一篇详细介绍 Python 爬虫入门的教程,从实战出发,适合初学者.读者只需在阅读过程紧跟文章思路,理清相应的实现代码,30 分钟即可学会 ...

  3. python爬虫教程视频-python爬虫(入门教程、视频教程)

    python的版本经过了python2.x和python3.x等版本,无论哪种版本,关于python爬虫相关的知识是融会贯通的,脚本之家关于爬虫这个方便整理过很多有价值的教程,小编通过本文章给大家做一 ...

  4. 爬取每日必应图片,python爬虫简单入门

    爬取每日必应图片: 网址:微软必应搜索 第一步,打开网站: 右键,查看网页源代码: 初看有点吓人,不过幸运的是图片地址就在开头几行显眼的位置 ![在这里插入图片描述](https://img-blog ...

  5. python爬虫简单入门(爬网页文本信息)

    环境 python 3.8.2 Shell 也可以使用PyCharm 一.爬网页文本基本步骤 1.请求目标网页,用requests请求,如果还没有安装,打开cmd,输入下面命令进行安装 pip ins ...

  6. linux下开发python爬虫_linux入门教程—开发常用命令

    开发常用命令 查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件. 查看一个程序是否运行 ps –ef|grep tomcat 查看所有有 ...

  7. python爬虫入门教程pdf-Python爬虫实战入门教程.pdf

    Python 爬虫实战入门教程 州的先生 <Python 爬虫实战入门教程> 作者:州的先生 微信公众号:州的先生 博客: 2018/3/24 1 Python 爬虫实战入门教程 州的先生 ...

  8. Python爬虫新手入门教学(十八):爬取yy全站小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  9. python爬虫入门实例-Python爬虫快速入门:基本结构简单实例

    本爬虫系列入门教程假设读者仅有一点点Python基础或者近乎为零的基础.如果是有Python基础的可以跳过一些对于Python基本知识的补充. 爬虫能干什么呢?一句话概括,正常通过浏览器可以获取的数据 ...

最新文章

  1. 职业技术学校计算机专业部教师,江安职校计算机专业部召开第二次全体教师大会...
  2. Vue学习(slot、axios)-学习笔记
  3. 2008秋季-计算机软件基础-未交实验报告名单
  4. 网易云免费OSS服务用做Markdown图床或博客图片外链
  5. 商务部部长助理黄海:中国服务外包产业发展势头良好
  6. OAuth2.0_授权服务配置_密码模式及其他模式_Spring Security OAuth2.0认证授权---springcloud工作笔记145
  7. 自学JavaWeb系列-JSP教程!
  8. 计算机随机数是如何生成的?(平分取中法、线性同余法)
  9. AI 算法工程师面试高频 100 题(附答案详解)
  10. Velodyne-16完全配置
  11. python操作符是什么意思_如何使用python操作符**与*?有什么区别?
  12. 2020北京国际金融安全论坛(二)
  13. 怎样买保险才不会被坑?用亲身经历告诉你!
  14. [言论]熊十力谈读书(摘录于《非常道——1840-1999的中国话语》)
  15. IO-Link工业总线型汽车撑杆装配线RFID写卡器CK-FR05-IO计算示例
  16. ORACLE数据库监控系统
  17. Matlab 中 global 全局变量用法
  18. 《程序员的自我修养》读书笔记(看了也不一定更)
  19. 网站ftp上传工具,六款值得你去使用的网站ftp上传工具
  20. 商标注册申请的步骤是怎样的

热门文章

  1. pytorch 实现 GRL Gradient Reversal Layer
  2. pygame绘制弧线
  3. 马拉车(manacher)算法
  4. Cesium 几何体和外观(Geometry Appearances)
  5. python手机销售系统结论于心得_手机销售心得体会
  6. SDNU_ACM_ICPC_2020_Winter_Practice_3rd
  7. 详细推导HMM模型之:EM算法
  8. web安全测试学习笔记(一)之环境搭建:OWASP_Broken_Web_Apps靶机
  9. acm -(并查集、启发式合并、gcd、枚举因子)2020 China Collegiate Programming Contest Changchun Onsite K. Ragdoll
  10. 小黑重装出现指纹“无法与传感器通讯,请确认传感器已经准备就绪”之解决方法...