python读取html_从零开始的Python爬虫教程(一):获取HTML文档

前言:在上一节从零开始的Python爬虫教程(零):粗识HTML结构中,粗略给大家介绍了一下HTML文档,是为了在接下来的教程中让大家更容易理解和掌握。在接下来的教程中,需要大家提前安装python3.x版本,大家不必拘泥于具体的版本,不管安装的是3.0还是最新的3.7,都不影响接下来的操作。至于安装教程,这里就不过多赘述了,读者可自行搜索到详细的教程。

未安装requests库的需要大家安装一下requests库,可以用pip安装,在cmd中执行:

pip install requests

d833c895d143ad4b4e6b19cae7ca24aba50f06bb.jpeg?token=b3a83fd06de2f4bd68e3b725256bedf6&s=61D223645AE49F68566DF40F0000E0C3使用pip安装requests库

安装成功之后我们可以在Python自带的IDE中导入requests库测试一下是否可用:

77094b36acaf2edd9fe02588e9d87fed3801938e.jpeg?token=08f83e4d78e652163ff4c24f3c1d4106&s=57947F2A8DA45C0316F441DE0000C0B3可以正常导入

我们平时在浏览器中浏览网站时,实际上是浏览器向网站所在服务器发送HTTP请求下载HTML文档到本地,然后再经过浏览器的解释、渲染,形成了我们所见的精美的页面,而原始的HTML文档实际上是这样的:

eac4b74543a98226c7310a82ef4ac7054890ebeb.jpeg?token=e962aec48c97597569bc7ff192bafad8&s=D9DE8D1A17684109466458DA0200C0B1原始文档

而编写一个爬虫,首先最基本的便是向目标服务器发送HTTP请求下载HTML文档。那么,如何用Python下载到HTML文档呢?我们仍以上一节中的百度百科为例:

第一步:使用requests.get(url)向目标服务器发起GET请求以下载HTML文档

复制百科的网址填入

f7246b600c33874432c5941d34c7a7fdd62aa098.jpeg?token=e36b2f5fa559e7cc5d25b040a4f11657

回车后将会发起请求:结果如下

cc11728b4710b9128aa460b6a635820793452259.jpeg?token=c462e6b59f7c53c551256bf188a0fc13&s=FDE6AC1A190ECCCE10D495FC02005031requests库请求出错了

阅读报错信息,它告诉我们,是因为目标服务器做了过多的网页重定向,导致请求失败报错。这里我们暂时不谈何为重定向,只说如何解决当前的问题。而我猜测,是由于百度服务器的反爬策略。何为反爬呢?就是服务器检测到该请求不是来自正常的浏览器,而是来自机器人或其他,因此拒绝你的请求或作其他处理。而爬虫归根结底就是模拟浏览器发出请求,然后获取信息。

那么,如何解决当前的问题呢?在HTTP请求头中加一个“User-Agent”,如下:

headers = {'User-Agent': 'User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'}

c83d70cf3bc79f3d238dd380dc69b315738b295a.jpeg?token=3b6bc095e69ee55ce2d995b7b1dffcd3&s=FFC6AC1A195E4CCC5A5494FC02005031未报错,请求成功

可以看到,这次没有再报错了。

这里,我们将requests.get(URL)的执行结果赋值给了response变量,而获取到的数据保存到了该结果的content属性中,我们可以通过输出content看一下获取到的HTML文档,执行如下代码:

print(response.content)

由于文档较大,执行该语句时,Python自带的IDE可能会卡死,所以我们就输出前200个字符看一下吧。

4e4a20a4462309f78d55a40a17c672f7d7cad638.jpeg?token=8bca39e2993249d1216c629fbb265178&s=C09AE83A995E57CC08C595DA000080B2输出结果

为了能够正常输出,我们使用专业的Python IDE测试一下:

18d8bc3eb13533fae994fbe9c11b831b40345b27.jpeg?token=d4e7c9d3875ecb1de58fc8a531cbf827&s=E0F2A36456F5A96E14CD850F0000E0C1代码和输出

d6ca7bcb0a46f21fb7753db691ec15640e33aeda.jpeg?token=1e9a6e3f655d5e4c016e169d4b7b7b2d&s=60F2A365DBA181724E55B40F000070C3输出结果

但是我们发现似乎获取到的HTML文档乱七八糟的,一个中文字符都没见到!别慌,这是因为还没有对文档进行解码,所以我们看不懂。

解码:print(response.content.decode('UTF8'))

f9dcd100baa1cd1112f13a5fd3dab6f8c2ce2d52.jpeg?token=566f7f3f3914b32e94c6182411ecf7dc&s=E8C2A3401EA8B76C4E45C40D0000A0C0输出解码后的结果

GOOD!可以看到我们已经能正常阅读HTML文档了!

本节就到这里啦,下节教大家如何从HTML文档中过滤筛选出我们需要的信息。

本节代码下载地址:github.com/TinyKoko/little-case/blob/master/从零开始的Python爬虫教程/chapter01.py

供大家下载测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cmd长ping记录日志和时间_四个网络命令ping、arp、tracert、route的详细用法

网络相关的从业人员,都需要面对检测和解决网络故障的各种问题,实际案例中因为网络导致的故障也是最多的,今天我们和大家一起来学习一下解决网络故障时使用最多的四个网络命令。希望对大家以后的实际工作中的故障排除起到作用。1、Ping命令的用…

计算机d盘给c盘,win10 c盘与d盘都是主分区如何将d盘空间分给c盘

在安装win10系统的时候,用户都喜欢将硬盘分为多个主分区盘符,可是在使用过程中,发现win10系统中c盘空间越来越小,因此就想要将d盘空间分一些给c盘,那么win10系统c盘与d盘都是主分区时如何将d盘空间分给c盘呢&#xff1…

大学计算机用的笔记本,推荐一款大学生用笔记本电脑

现在的大学生,基本上都会购买一台适合适合自己的电脑。但是市面上那么多品牌,要怎么选择呢?下面是小编整理的详细内容,一起来看看吧!大学生用笔记本电脑推荐一、惠普ENVY 13这款惠普笔记本电脑只有13英寸,外…

数字图像处理技术详解程序_大学专业详解系列135——数字媒体技术(工学学士)...

数字媒体技术(工学学士)毕业生应具备的知识和能力(1)系统掌握数字媒体技术专业的基本理论、基础知识和基本技能;(2)掌握数字影视技术、数字影视制作技术的理论与方法,能熟练运用拍摄、编辑、特效制作等技巧创作数字影视作品;(3)掌握网络传播的…

乐高收割机器人_乐高圣诞45002作品来啦!——驯鹿拉雪橇、圣诞树、圣诞棒棒糖...

圣诞节快乐圣诞系列作品第五弹来袭大家好我是zfeng老师,今天我们继续来圣诞节系列作品吧!有粉丝朋友留言说希望出一起用百变工程系列积木搭建的圣诞主题作品,今天它来了,wedo、ev3的作品也已经安排接下来会陆续更新。闲话不多说啦…

w7系统关闭打印服务器,w7打印后台处理程序服务总是自动停止如何解决【照片】...

今天我要向您介绍的是,此w7打印后台处理程序服务始终会自动停止. 怎么解决呢?如何解决此问题,我将向您介绍具体的解决方案.计算机系统推荐下载: 雨林木风win7系统下载具体解决方案:1. 打印机服务启动设置开始打印服务要启动和查看打印服务&am…

域服务器怎么修改管理员密码,域服务器更改客户端管理员的密码

域服务器更改客户端管理员的密码 内容精选换一换管理员应定期修改Kerberos管理员“kadmin”的密码,以提升系统运维安全性。修改此用户密码将同步修改OMS Kerberos管理员密码。已在集群内的任一节点安装了客户端,并获取此节点IP地址。cd /opt/hadoopclien…

.classpath文件有什么用_干货分享:Windows目录结构剖析,C盘目录常见文件夹都有什么用?...

我们天天和文件夹打交道,但是有好多的碍眼的文件夹我们能不能删除呢,来看看今天的文章。先问一个问题,你对你电脑的文件系统了解多少?很多人只管用,但是有些时候,想要自己清理一下文件的时候,不…

手机型号云服务器,手机型号查询接口

手机型号查询接口 内容精选换一换通过调用云手机服务提供的接口,您可以完整地使用云手机的所有功能。例如查询云手机列表、重启云手机、为云手机推送文件。华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问…

python counter_教你Python的collections.Counter类型

collections.Counter 类型可以用来给可散列的对象计数,或者是当成多重集合来使用 —— 多重集合就是集合里的元素可以出现多次1。collections.Counter 类型类似于其它编程语言中的 bags 或者 multisets2。(1)基本用法counter collections.Counter([生物, 印记, 考古…

华为云classroom应用_华为任正非:将来所有应用都会长在云土地上,但现在还不是...

IT之家1月1日消息 昨日,华为心声社区公开了任正非 11 月 4 日在企业业务及云业务汇报会上的讲话。任正非表示,将来所有应用都会长在云土地上,但现在还不是,如何建成 “黑土地”是华为努力的任务,应一步一步来。IT之家了…

java不同进程的相互唤醒_Java线程生命周期与状态切换

前提最近有点懒散,没什么比较有深度的产出。刚好想重新研读一下JUC线程池的源码实现,在此之前先深入了解一下Java中的线程实现,包括线程的生命周期、状态切换以及线程的上下文切换等等。编写本文的时候,使用的JDK版本是11。Java线…

32查运行内存的map文件_linux内存管理

概念先行先理解内存管理中的几个概念:内存,主存,缓存,外存,虚拟内存,物理内存,虚拟地址,物理地址外存:计算机的外部存储,比如硬盘(机械硬盘、固态硬盘、混合硬盘)&#x…

react usecontext_鬼才!我居然把 Vue3 的原理用到了 React 上?

前言vue-next是Vue3的源码仓库,Vue3采用lerna做package的划分,而响应式能力vue/reactivity被划分到了单独的一个package中。如果我们想把它集成到React中,可行吗?来试一试吧。使用示例话不多说,先看看怎么用的解解馋吧…

微信多开txt_在电脑上怎么实现微信多开的效果

现在越来越多的年轻人在电脑办公的时候,不止有一个微信号,由于工作、家庭等各方面因素,想自己能在一个电脑上打开多个微信怎么办?下面小编就把自己的所学分享给大家一.首先在电脑桌面上新建一个txt文本文件,把这个文档…

vue slot scope使用_20、slot插槽的用法

重点:单个插槽、具名插槽、作用域插槽的用法;访问插槽的方法。其实本小白对插槽理解的还不深,哪些场景会经常用到插槽也不了解。但是本着“大胆猜测”的理念,我的猜测如下:假设有 父组件A,有 子组件B、子组…

python工作目录_如何使用python 3获取当前工作目录?

When I run the following script in IDLE import os print(os.getcwd()) I get output as D:\testtool but when I run from cmd prompt, I get c:\Python33>python D:\testtool\current_dir.py c:\Python33 How do I get same result which I got using IDLE ? 解决方案 …

flutter刷新页面_用Flutter实现58App的首页

背景Flutter作为全新跨平台应用框架,在页面渲染和MD开发上优势明显,可谓是业界一枝独秀。正好最近有这样的一个机会学习Flutter开发,我们便尝试用它开发一个MD风格的较复杂页面,来比较跟原生应用开发的优势。也是想通过对新框架的…

python调用报表制作工具_使用Python轻松制作漂亮的表格

Python太有用而且很方便 图表可以用matplotlib轻松制作,数值计算只要有numpy就行。 最近,Python被广泛用于机器学习系统的研究,甚至还能制作游戏。 我突然想知道:“是否可以用Python来制作图表而不是表格?” 这个时候&…

小米网关控制空调伴侣_小爱同学怎么控制灯?

说说我们神奇小爱同学吧,小爱同学是小米旗下的一款智能AI音箱,会根据您的指令来操作电器设备,比如说开关灯,那么小爱同学怎么控制灯?如果家里的是传统的灯泡,不是智能灯连接还能控制吗?今天蜜罐…