Python 爬虫学习笔记(二)

Python 爬虫学习笔记(二)分析网页我们平时使用浏览器来访问网页,实质上来看,就是通过一个客户端经过网络连接访问了服务器端,访问前,我们的页面没有任何内容,那么这些内容必然都是从服务器端传输过来的。爬虫的工作就是利用编程的方式自动化地从服务器端获取并分析数据,得到我们需要爬取的内容。因此想要利用爬虫获取内容,首先需要我们分析目标网站页面,了解其数据排列方式,知晓其数据传输过程,从而能够制订正确有效的爬取途径。以CSDN中我本人之前的一篇文章为例https://blog.csdn.net/qq_26292987/article/

大家好,又见面了,我是你们的朋友全栈君。

分析网页

我们平时使用浏览器来访问网页,实质上来看,就是通过一个客户端经过网络连接访问了服务器端,访问前,我们的页面没有任何内容,那么这些内容必然都是从服务器端传输过来的。爬虫的工作就是利用编程的方式自动化地从服务器端获取并分析数据,得到我们需要爬取的内容。

因此想要利用爬虫获取内容,首先需要我们分析目标网站页面,了解其数据排列方式,知晓其数据传输过程,从而能够制订正确有效的爬取途径。

以CSDN中我本人之前的一篇文章为例
https://blog.csdn.net/qq_26292987/article/details/107608315

如果我们希望获取这个页面上的文章内容而不希望自己动手去复制粘贴,爬虫是一个非常有效的工具,而分析这个页面有几个方向:

(一)分析页面源代码:
在页面上单击右键,可以看到选项“查看页面源代码”(这里我使用的是Microsoft Edge浏览器,不同浏览器可能有所不同),弹出的新网页内容如图:
页面源代码图片
如何能够在繁杂的代码信息中快速找到我们需要的内容呢?
【1】查找大法好
“Ctrl+F”,搜索要查找的关键词,看是否能得到结果,这里目的是查找文章内容,直接搜索“BeautifulSoap用法”即可得到如下界面
查找结果
那么为什么选择搜索“BeautifulSoap用法”而不是题目或者其他呢?简单查看源代码即可发现,题目在源代码中多次出现,不能很好的确定文章位置,第一段同理(第一段主要是本人编辑的问题)
【2】进阶方法
对于这个方法,首先需要对网页源代码的组织方式有一定的了解,也就是需要对HTML相关知识有亿点点了解:https://www.runoob.com/html/html-tutorial.html
经过简单的学习(After ten thousands years)
我们知道了:
HTML是一种标记语言,有严谨的标签设置来确定其中每一部分的功能,而更关键的是:

HTML 标签是由尖括号包围的关键词,比如 <html>
HTML 标签通常是成对出现的,比如 <b></b>
标签对中的第一个标签是开始标签,第二个标签是结束标签
开始和结束标签也被称为开放标签和闭合标签

声明为 HTML5 文档

<html> 元素是 HTML 页面的根元素
<head> 元素包含了文档的元(meta)数据,如 <meta` charset=“utf-8”> 定义网页编码格式为 utf-8。

<title> 元素描述了文档的标题
<body>> 元素包含了可见的页面内容
<h1> 元素定义一个大标题
<p> 元素定义一个段落
<a> 元素定义一个链接
<img> 元素定义一个图像
<div><span> 元素定义一个区块
<script>定义一个脚本(运行的函数)

有了上面这些知识,那我们需要的东西一定是在body里去找的,具体在哪里找呢?(实话说还是“Ctrl+F”更方便,这些知识更多的是为了下一步从页面中获取内容所需要的)这里我个人推荐sublime作为暂时的阅览器,配置好该软件的“HTML/CSS/JS Prettify”模块之后,只需要轻轻一点,那些没有缩进和对齐的代码就变成了下面这样:
在这里插入图片描述
随后就可以比较方便的通过折叠查找等方式获得我们需要的内容了

(二)分析页面元素
在页面上按“F12”,神奇的事情出现了,页面的右侧(有的浏览器是下方)发生了有趣的变化:
在这里插入图片描述
其上方菜单栏有“元素、控制台、源代码、网络、性能、内存”等几个选项,现在我们只需要注意“元素、网络”两个部分就够了!
元素区系统的展示了页面上全部的元素和内容及其排布方式,修改其中的内容,页面上的内容也会发生相应的改变(别担心,服务器端存储的内容没有改变),将鼠标移到相应的位置,可以看到左侧相应的内容出现了被选中的效果,现在再去寻找元素所在的位置就轻松多了吧。

(三)分析网络传输
如果你对前面的内容还有印象,那你应该还记得,页面上的所有内容都是服务器端传输到我们的浏览器上的,也就是说,页面上的每一个元素都是服务器端传输的结果,在网络中可以看到这个过程:
在这里插入图片描述
看到这么一堆乱七八糟的东西,我的内心是崩溃的(这都啥玩意儿啊)
没事儿,无所不能的网络告诉我们,遇到事情不要慌,先拿出手机拍一张(笑)
首先我们可以看类型,从图片中可以清晰的看到其传输的很大一部分内容都是png、gif之类的图片,那么这些图片是什么呢?一般我们可以点击左侧的名称,在弹出的预览页面中看到他们主要是一些页面上的图标、广告等需要图片的元素;其次是script,这个我们已经了解了,它是一种网页上使用的脚本函数,那这些“.js”文件大概率就是网页上运行的脚本函数的内容;紧接着是text,从类型上可以看出来,这是一种文本文件,与其相似的还有类型为document的文件流,这些文件中的内容很多是和我们需要的内容直接相关的。
其次我们可以分析文件名称,确实,文件名称也是乱糟糟的,但是,如果这些文件名称真的是乱糟糟的没有规律,那网站的运维人员又该如何在一团乱麻中快准狠找到问题解决问题呢?所以坚信一点,只要是人设计的,就一定是有规律可循的,就一定是有漏洞的,然后通过多个网页的对比,总能够找到我们需要的东西。
再次,我们可以去看大小。很多时候,要分析的页面所包含的最重要的信息其文件传输流一定不会很小,因此一些只有几个B的信息流在分析的时候可以忽略掉,按照信息流的大小来判断其重要与否是一个很方便且有必要的方式。

那么,对于初级的爬虫学习者来说,用好这三个方法,很多网页就可以去尝试着分析并寻找其有价值的信息藏在何处从而将其爬取到自己的电脑上了。然而,如果说爬虫是网络世界爬取信息最锋利的矛,那么为了保护自己的网站信息不被随意爬取(毕竟信息就是金钱),同时也为了让网站的设计和使用更加便利,网站使用了很多方式来优化自己,有意无意间给我们的爬取带来了很多困难,常见的如异步信息流、动态页面加载、登陆验证、ip访问次数限制等等,其中的一些可以通过分析网页解决,大部分都需要我们针对不同的网站对自己的程序做不同的优化处理才能够解决。那么,接下来我们先做一个小项目,初步尝试一下爬虫获取数据的快乐吧!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125155.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 阿里云服务器开放某个端口失败_阿里云服务器怎么远程连接

    阿里云服务器开放某个端口失败_阿里云服务器怎么远程连接首先在防火墙开放端口,接着在Linux中开放,此处以8081为例因为centos7的防火墙iptables已经由firewalld来管理,所以需要将8080端口添加到防火墙开放端口firewall-cmd–zone=public–add-port=8081/tcp–permanent添加完端口之后,需要重启下防火墙systemctlrestartfirewalld.service查看端口是否添加到防火墙开放端口firewall-cmd–query-…

    2022年10月2日
    1
  • iscsiadm命令基本用法[通俗易懂]

    iscsiadm命令基本用法[通俗易懂]发现目标iscsiadm-mdiscovery-tsendtargets-p192.168.1.1:3260-mdiscovery指定模式为discovery-p192.168.1.1:3260指定目标ip和端口登入节点iscsiadm-mnode–Tiqn.1997-05.com.test:raid-p192.168.1.1:3260-l系统启动时自动登入iscsiadm-mnode–Tiqn.1997-05.com.test:raid-p192.16

    2022年8月23日
    7
  • java变量设置_如何正确的配置JAVA环境变量

    java变量设置_如何正确的配置JAVA环境变量原创:YiKiA2Data什么是环境变量?环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。为什么要配置环境变量?为了方便在控制台编译和运行java程序,不必进入到java的程序目录里面去运行。这样你放在任何目录下的java程序文件都可以编译运行,而不是必须把这个程序文件放在java.exe和javac.exe所在的目录下。什么是JAVA_HOME…

    2022年7月7日
    27
  • 【蓝桥杯】双非本科?大一大二不敢参加?这篇蓝桥全解析帮你打消疑虑轻松获奖【内附蓝桥资源和学习路线】

    【蓝桥杯】双非本科?大一大二不敢参加?这篇蓝桥全解析帮你打消疑虑轻松获奖【内附蓝桥资源和学习路线】⭐️引言⭐️大家好,我是执梗,最近蓝桥杯的报名正如火如荼的开展,许多院校也开展了院赛筛选,许多大一大二的小伙伴陷入了是否该报名的疑虑。蓝桥杯到底是啥?蓝桥杯适合我参加吗?我现在零基础还来得急吗?我要是陪跑了报名费三百块岂不是交智商税了?就算报名了我该如何去训练呢?…..话不多说,我们挨个解答(结尾有免费的真题和解析以及配套的考试环境搭建,建议收藏)⭐️目录⭐️????1.蓝桥杯到底是什么?????2.我们为什么要参加蓝桥杯?????1.含金量高…

    2022年4月29日
    98
  • oracle中修改表名语句

    oracle中修改表名语句ALTERTABLE旧表名RENAMETO新表名;(大写为系统命令)

    2022年5月17日
    37
  • 数据归一化处理transforms.Normalize()

    数据归一化处理transforms.Normalize()数据归一化处理transforms.Normalize()1.图像预处理Transforms(主要讲解数据标准化)1.1理解torchvisiontransforms属于torchvision模块的方法,它是常见的图像预处理的方法在这里贴上别人整理的transforms运行机制:可以看出torchvision工具包中包含三个主要模块,主要讲解学习transformstorchvision.transforms:常用的数据预处理方法,提升泛化能力包括:数据中心化、数据标准化、缩放、裁剪、旋

    2022年6月23日
    119

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号