美文网首页虫虫
Python爬虫的基本操作:单页面单目标、单页面多目标、多页面多

Python爬虫的基本操作:单页面单目标、单页面多目标、多页面多

作者: 9ba4bd5525b9 | 来源:发表于2019-03-15 14:07 被阅读120次

    什么是爬虫,这就是爬虫:

    加上注释不到20行代码,你就完成了一个爬虫,简单吧

    怎么写爬虫

    网页世界多姿多彩、亿万网页资源供你选择,面对不同的页面,怎么使自己编写的爬虫程序够稳健、持久,这是一个值得讨论的问题

    俗话说,磨刀不误砍柴工,在开始编写爬虫之前,很有必要掌握一些基本知识:

    网页的结构是HTML,爬虫的目标就是解析HTML,获取目标字段并保存

    客户端展现的网页由浏览器渲染,客户端和服务端的信息交互依靠HTTP协议

    这两句描述体现了一名爬虫开发人员需要掌握的基本知识,不过一名基本的后端或者前端工程师都会这些哈哈,这也说明了爬虫的入门难度极低,从这两句话,你能思考出哪些爬虫必备的知识点呢?

    基本的HTML知识,了解HTML才方便目标信息提取

    基本的JS知识 ,JS可以异步加载HTML

    了解CSS Selector、XPath以及正则,目的是为了提取数据

    了解HTTP协议,为后面的反爬虫斗争打下基础

    了解基本的数据库操作,为了数据持久化

    有了这些知识储备,接下来就可以选择一门语言,开始编写自己的爬虫程序了,还是按照上一节说的三个步骤,然后以Python为例,说一说要在编程语言方面做那些准备:

    网页请求:内置有urllib库,第三方库的话,同步请求可以使用requests,异步请求使用aiohttp

    分析HTML结构并提取目标元素:CSS Selector和XPath是目前主流的提取方式,第三方库可以使用Beautiful Soup或者PyQuery

    数据持久化:目标数据提取之后,可以将数据保存到数据库中进行持久化,MySQL、MongoDB等,这些都有对应的库支持,当然你也可以保存在硬盘,谁硬盘没点东西对吧(滑稽脸)

    掌握了上面这些,你大可放开手脚大干一场,万维网就是你的名利场,去吧~

    我觉得对于一个目标网站的网页,可以分下面四个类型:

    单页面单目标

    单页面多目标

    多页面单目标

    多页面多目标

    具体是什么意思呢,可能看起来有点绕,但明白这些,你之后写爬虫,只要在脑子里面过一遍着网页对应什么类型,然后套上对应类型的程序(写多了都应该有一套自己的常用代码库),那写爬虫的速度,自然不会慢

    单页面单目标

    通俗来说,就是在这个网页里面,我们的目标就只有一个,假设我们的需求是抓取这部 电影-肖申克的救赎 的名称,首先打开网页右键审查元素,找到电影名称对应的元素位置,如下图所示:

    在某个单一页面内,看目标是不是只有一个,一眼就能看出标题的CSS Selector规则为:#content > h1 > span:nth-child(1),然后用我自己写的常用库,我用不到十行代码就能写完抓取这个页面电影名称的爬虫:

    多页面多目标就是此情况下多个url的衍生情况

    单页面多目标

    假设现在的需求是抓取 豆瓣电影250 第一页中的所有电影名称,你需要提取25个电影名称,因为这个目标页的目标数据是多个item的,因此目标需要循环获取,这就是所谓的单页面多目标了:

    多页面多目标

    多页面多目标是上述单页面多目标情况的衍生,在这个问题上来看,此时就是获取所有分页的电影名称

    如果网络没问题的话,会得到如下输出:

    注意爬虫运行时间,1s不到,这就是异步的魅力

    用Python写爬虫,就是这么简单优雅,诸位,看着网页就思考下:

    是什么类型的目标类型

    用什么库模拟请求

    怎么解析目标字段

    怎么存储

    相关文章

      网友评论

        本文标题:Python爬虫的基本操作:单页面单目标、单页面多目标、多页面多

        本文链接:https://www.haomeiwen.com/subject/emblmqtx.html