前言
随着网络的迅速发展,网络称为大量信息的载体,如何有效地提取并利用这些信息成为巨大的挑战。网络爬虫是一种按照一定的规则来自动抓取网络信息的程序。
定项抓取相关网页的聚焦爬虫是通用爬虫的一种类型,它是一个自动下载的网页的程序,可以根据既定的抓取目标来有选择地访问网络上的网页与相关的链接,获取所需的信息。
Python抓取网页文档的接口更简洁,并且提供了便捷的文档处理功能,非常方便地应用于网络数据的爬取。本次网络爬虫的实现用Python爬取公开网站的疫情数据疫情数据,进行举例和分析。方法是一样的,大家也可以用同样的方法去爬取其他网站信息。
一、项目简介
数据获取的方法主要分为以下几个阶段。
1、寻找数据源
本次咱们已经确定了,腾讯新闻疫情数据的获取的网站。
#腾讯新闻新型冠状肺炎疫情实时追踪#
2、确定许可
我们需要确定对方的网站是否允许我们获取对应的数据。(如果对方不允许的话我们是不可以使用对方的数据的。)
3、确定工具
目前流行的爬虫工具有很多,在此我们可以选择小型、中型的爬虫工具,来实现海量数据的提取。
4、访问地址
我们要利用确定好的工具去访问对方的网址,获取海量的数据。然而此时获取的数据可能会有很多无关紧要的信息,此时的数据可能会不是我们全部所需的。所以我们需要解析文档。
5、解析文档
从文档中找到有效的信息,并把它提取出来。而无效的信息将被丢弃。
6、采集数据
采集信息是一个所谓流的获取过程,我们要源源不断的对数据进行解析,从而获取到海量的数据,直到整个爬虫数据的结束。
二、项目实现过程
1.查看限制
首先我们先来看一下目标网站它对于我们爬虫的限制是怎么存在的。我们首先要查看的是对方网站的Robots信息协议。所谓的Robots协议也是所谓的机器人协议,它用来告诉我们哪些网页是可以获取的,哪些是不可以获取的。
那么Robots协议的地址在哪里呢?
我们可以取网址的标题部分然后后面加/robots.txt就可以获取到该网址的Robots协议。
#如果我们打开之后发现这个网址里面有信息的话,这说明是有限制的。#
如果这个网址是不存在的,说明对方网站对我们没有任何限制的。
我们发现网址中是存在一些信息的。
1、User-agent指的是对于爬虫名称的限制,在此网页中出现的*是指通配符,所谓通配符的意思就是任意的信息。那么对于当前的爬虫来说,我们就属于 任意的爬虫之一。那么对于我们的限制来说时怎么样的呢。
2、下面有一项名为Disallow(不允许的意思),后面会跟上所有不允许爬取的网页信息。当前我们这个网站Disallow后面为空,表示当前没有我们不允许爬取的网页。我们对于这些网页的要求都是可以爬取的。
3、Sitemap是对于地址信息的确定。
总体来看Robots协议对于网站爬虫来说还是非常友好的,它并没有去限制爬虫哪些页面可以爬取,哪些页面不可以爬取。换句话来说就是这个网站可以允许任何人去爬取它的网页信息。
这时我们应该去观察整个页面的信息变化。我们可以通过利用开发者工具。*(开发者工具打开方式按住F12)*
我们通过这个开发者工具可以整个页面的流转变化。咱们举一个例子让大家更清晰的理解。
首先咱们在开发者工具中找到网络选项,然后按Ctrl+R
咱们可以看到在很短的一段时间内,我们的浏览器就完成了数据的刷新。
这时会发现在这段时间里更新了很多信息。这些信息当中就有刚刚刷新的时候获得到的流转数据。那么这些流转数据当中就有可能存在我们想要获取数据的网址,甚至是返回的数据。那么问题来了,如何在这些流转数据中爬取出我们想要的数据呢。
这里我们主要看两点:
1、对于名称的熟悉程度
。
我们可以来看一下,文件格式为.js(js文件是指JavaScript代码,以“.js”为拓展名的文本文档,用于在网页中执行JavaScript指令。js文件一般不能直接打开,只有配合网页使用,才能看到它的效果。)一般不是我们想要的文件。还有.png这类图片文件,也不是我们想要的数据。
而我们想要的文件一般会在.json文件当中。(json是JavaScript Object Notation的缩写,是一种有条理,易于访问的存储信息的方法。它为我们提供了一个可读的数据集合,我们可以通过合理的方法来访问这些数据。)
我们现在点开一个json格式的文件。
我们可以在常规中看到该文件的请求方法为GET请求,状态代码为200 OK。这里解释一下
然后点开响应,我们可以看到一些有关疫情的数据。
同样这里还有很多其他的请求,再此就不一一列举了。
需要注意的是,有的请求是有数据的有的请求是没有数据的还有的请求是所谓的错误数据,这就需要我们分辩哪些是我们需要的数据。
2.读入数据
我们需要确定我们要得到的数据。咱们以某漂亮国疫情数据为例。
1、首先找到对应的url:https://api.inews.qq.com/newsqa/v1/automation/foreign/daily/list?country=%E7%BE%8E%E5%9B%BD
确定完url我们就可以进行爬取
import requests #导入requests这个库
url="https://api.inews.qq.com/newsqa/v1/automation/foreign/daily/list?country=%E7%BE%8E%E5%9B%BD" #url地址链接
r=requests.get(url) #通过requests.get这个方法,这个方法能够去获取对应url链接里面所有的数据,把这个数据返回回来存到 r 当中
demo=r.text #获取页面当中全部的信息,把信息存到demo当中
print(demo) #输出demo
三、项目效果
总结
(本次是实现基于Python的疫情数据的爬取)(方法是一样的大家也可以用同样的方法去爬取其他网页信息)(由于本人处于大学初期并未学成,还是新手小白,可能写的代码过于简单,但是文章前半部分总结的知识我个人认为很有用,如有错误还请见谅)(欢迎各位技术大牛批评指正)
!!(如有侵权第一时间回应并会做出相应处理)!!