网页抓取解密( 摘取一段互动百科之来说第一种)
优采云 发布时间: 2021-09-30 07:07网页抓取解密(
摘取一段互动百科之来说第一种)
蜘蛛
爬虫,又称蜘蛛或爬虫,是一种机器人程序,根据一个或多个初始URL地址抓取并分析该网页的内容,最终通过一定的过滤机制获取所需的数据。此处的 URL 可以是指向普通网页或应用程序某个页面的链接。
对于爬虫(和我目前的知识),网页可以分为几种类型。下面是交互式百科全书的介绍:
第一类是针对没有结构或结构非常简单的以文本和超链接为主的网页;第二种是针对不能直接批量访问的结构化数据源(如RDBMS)动态生成的页面;第三类 目标数据介于第一类和第二类数据之间,结构较好,表现出一定的模式或风格,可以直接访问。
通俗的解释,第一种是百度搜索结果页,只能点击底部标签才能看到第二页;第二种,如花花网、微博,无法一次性获取一页内容,需要不断更新。拉取以获取新的一批数据。我们先介绍第一种,静态数据加载的页面。
爬取数据的步骤一般分为两步。查找和获取在下面详述。
1.查找-目标数据在网页中的结构位置和逻辑关系
首先,看一下页面的结构,看看它们的代码是如何编码的。以chrome浏览器为例,在页面上右键查看,可以进入开发者模式,如下图(不同浏览器可能调用方式不同),在这种模式下可以看到整个的结构页面,包括 html/ css/js 代码,网页请求接收到的数据。然后点击圆圈中的按钮,选择左边的一行文字,同时会在右侧面板的Elements下选择对应的一行代码(为了简单理解,页面上会出现这行代码在左边 )。
chrome 开发者模式
在左侧的列表中,您可以看到很多尖括号。这些括号是页面最基本的元素。一般来说,一个元素将有两个相同的括号作为开始和结束标志。括号中间的文字显示在网页上。上面的内容,结束标记也会有一个斜线/,如果是段落,就是链接,就是列表项等等。除了元素名,括号里面还会有属性。比如7小时前,span元素有个属性名为class,class的属性值为pub-time。
这是非常重要的。爬虫根据元素及其相应的属性值过滤页面内容。
以上图为例进行提问。我需要获取此页面上的所有问题及其相应链接。怎么对付他们?
例如
通过分析可以发现,所有的试题文本都遵循一个数据结构(多层嵌套结构,li中嵌套了两个div和一个span,div中嵌套了一个h2,这里不再详述),如图上图所示。
我们要查找的是标签中的文本和称为 href 的属性值。看嵌套逻辑,li>div(class="news-title")>h2>a。
经过以上步骤,对于一个普通的页面,我们基本上可以快速的找到它在页面上的位置以及上下层的逻辑关系。开始第二步吧~
2.get it-通过python抓取页面中的数据
环境:mac os
Python 版本:3.5
IDE:pycharm
第三方模块:BS4(requests是python自带的模块,可以直接导入)
工欲善其事,必先利其器。PC端可能还需要配置环境变量,编辑器不用pycharm。Mac自带shell可以使用(内置版本为python2.6),PC自带的cmd也可以使用,这些问题就不细说了。
起始码。
1.导入模块,两个模块分别使用上述两种语法。
*敏*感*词*请求
从 bs4 导入 BeautifulSoup
2.获取整个网页
这一步使用requests模块,将url赋值给一个变量,使用模块中的get函数来获取url中的数据。