网络爬虫是一种程序,主要用于搜索引擎,它将一个网站的所有内容与链接进行阅读,并建立相关的全文索引到数据库中,然后跳到另一个网站.样子好像一只大蜘蛛.

当人们在网络上(如google)搜索关键字时,其实就是比对数据库中的内容,找出与用户相符合的.网络爬虫程序的质量决定了搜索引擎的能力,如google的搜索引擎明显要比百度好,就是因为它的网络爬虫程序高效,编程结构好.

一、什么是爬虫

首先简单的理解一下爬虫。即请求网站并且提取自己所需的数据的一个过程。至于怎么爬如何爬,将是后面进行学习的内容,暂且不必深究。通过我们的程序,可以代替我们向服务器发送请求,然后进行批量、大量的数据的下载。

二、爬虫的基本流程发起请求:通过url向服务器发起request请求,请求可以包含额外的header信息。

获取响应内容:如果服务器正常响应,那我们将会收到一个response,response即为我们所请求的网页内容,或许包含HTML,Json字符串或者二进制的数据(视频、图片)等。

解析内容:如果是HTML代码,则可以使用网页解析器进行解析,如果是Json数据,则可以转换成Json对象进行解析,如果是二进制的数据,则可以保存到文件进行进一步处理。

保存数据:可以保存到本地文件,也可以保存到数据库(MySQL,Redis,Mongodb等)

三、request请求包含什么

当我们通过浏览器向服务器发送request请求时,这个request包含了一些什么信息呢?我们可以通过chrome的开发者工具进行说明(如果不知道如何使用看本篇备注)。请求方式:最常用的请求方式包括get请求和post请求。post请求在开发中最常见的是通过表单进行提交,从用户角度来讲,最常见的就是登录验证。当你需要输入一些信息进行登录的时候,这次请求即为post请求。

url统一资源定位符:一个网址,一张图片,一个视频等都可以用url去定义。当我们请求一个网页时,我们可以查看network标签,第一个通常是一个document,也就是说这个document是一个未加外部图片、css、js等渲染的html代码,在这个document的下面我们会看到一系列的jpg,js等,这是浏览器根据html代码发起的一次又一次的请求,而请求的地址,即为html文档中图片、js等的url地址

request headers:请求头,包括这次请求的请求类型,cookie信息以及浏览器类型等。 这个请求头在我们进行网页抓取的时候还是有些作用的,服务器会通过解析请求头来进行信息的审核,判断这次请求是一次合法的请求。所以当我们通过程序伪装浏览器进行请求的时候,就可以设置一下请求头的信息。

请求体:post请求会把用户信息包装在form-data里面进行提交,因此相比于get请求,post请求的Headers标签的内容会多出Form Data这个信息包。get请求可以简单的理解为普通的搜索回车,信息将会以?间隔添加在url的后面。

四、response包含什么响应状态:通过Headers中的General可以看到status code。200表示成功,301跳转,404找不到网页,502服务器错误等。

响应头:包括了内容的类型,cookie信息等。

响应体:请求的目的就是为了得到响应体,包括html代码,Json以及二进制数据等。

五、简单的请求演示

通过Python的request库进行网页请求:

输出的结果就是还未渲染的网页代码,即请求体的内容。可以查看响应头的信息:

查看状态码:

还可以将请求头添加到请求信息里面:

抓取图片(百度logo):

六、如何解决JavaScript渲染问题

使用Selenium webdriver

输入print(driver.page_source)可以看到,这次的代码是渲染之后的代码。

【备注】chrome浏览器的使用F12打开开发者工具

Elements标签显示了显然后的HTML代码。Network标签

Network标签下有浏览器请求的数据,点开可以查看详细的信息,如上提到的request headers、response headers等等。

以上就是什么是爬虫?爬虫的基本流程是什么?的详细内容,更多请关注php中文网其它相关文章!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

python爬虫流程-什么是爬虫?爬虫的基本流程是什么?相关推荐

  1. python爬虫csdn里下载_python爬虫搭配起Bilibili唧唧的流程分析

    前言 最近需要大规模下载B站视频,同时要将下载好的视频用BV号进行重命名,最后上传至服务器.这个工作一开始我是完全手工完成的,通过游猴来下载,可是下载几十个视频还好,再多一点的话真是太烦了,而且生产力 ...

  2. (二)python网络爬虫(理论+实战)——爬虫分类和基本流程

     小白都能学会的python网络爬虫专栏: https://blog.csdn.net/c1007857613/category_12127982.html 序言 本人从事爬虫相关工作已8年以上,从一 ...

  3. 零基础学python爬虫-零基础如何学爬虫技术?一篇带你入门!(理论+实操+荐书)...

    对于小白来说,爬虫可能是一件非常复杂.技术门槛很高的事情. 但掌握正确的方法,在短时间内做到能够爬取主流网站的数据,其实非常容易实现! 同时,你需要从一开始就有一个具体的目标!只有在目标的驱动下,你的 ...

  4. python爬虫百科-Python从概念上先了解爬虫

    什么是爬虫 爬虫:就是抓取网页数据的程序.搜索引擎的底层其实就是爬虫. 百度百科:网络爬虫 关于Python爬虫,我们需要学习的有: Python基础语法学习(基础知识) HTML页面的内容抓取(数据 ...

  5. python sub 不区分大小写_Python网络爬虫入门篇

    1. 预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. Python入门篇:https://www.cnblo ...

  6. 《Python爬虫开发与项目实战》——第3章 初识网络爬虫 3.1 网络爬虫概述

    本节书摘来自华章计算机<Python爬虫开发与项目实战>一书中的第3章,第3.1节,作者:范传辉著,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第3章 初识网 ...

  7. [Python]网络爬虫(12):爬虫框架Scrapy的第一个爬虫示例入门教程

    (建议大家多看看官网教程:教程地址) 我们使用dmoz.org这个网站来作为小抓抓一展身手的对象. 首先先要回答一个问题. 问:把网站装进爬虫里,总共分几步? 答案很简单,四步: 新建项目 (Proj ...

  8. python网络爬虫的特点_Python网络爬虫(一)- 入门基础

    目录: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程 ...

  9. 四、Python复习教程(重点)-爬虫框架

    目录导航: 文章目录 七.Python网络爬虫基础(上) 1. Python中的正则表达式 2. 正则表达式基础语法介绍 2.1 原子 非打印字符: 通用字符: 2.2 元字符 元字符: 2.3 模式 ...

  10. 大佬用python写了个豆瓣短评爬虫,有你喜欢的电视试试吗

    前言 本篇主要实现的是对任意一部电影短评(热门)的抓取以及可视化分析. 也就是你只要提供链接和一些基本信息,他就可以 分析 对于豆瓣爬虫,what shold we 考虑?怎么分析呢?豆瓣电影首页 这 ...

最新文章

  1. WinForm中Combobox绑定值问题
  2. FineReport报表和FineBI的差别和各自的优势在哪
  3. U3D协程Coroutine之WWW与Update()的并行测试
  4. 小米手机60帧录屏_手机录屏怎样只录手机内部声音不录入外部声音?教你三种方法,一定能帮到你...
  5. 鲶鱼效应:为什么要适当的贷款?
  6. 振臂高呼式的写作:谈肖亦农的《毛乌素绿色传奇》
  7. wxpython 可视化开发pdf_MicroPython for the Internet of Things.pdf
  8. vuejs npm chromedriver 报错
  9. android 性能优化---(5)Bitmap图片资源优化
  10. datetimepicker一个不错的日历android特效
  11. 经验的总结,需要记录。
  12. CentOS7中的firewall 和 iptables
  13. Windows10如何安装windows terminal
  14. Android第七讲笔记(圆形图片,网络图片,下拉刷新,上拉加载)
  15. 中国近12个月以来的搜索引擎市场份额
  16. PCB实用设计3 | 二极管大全·尖刺·滤波·有意义的降压
  17. 强烈推荐一款开源项目! (OPC)微服务能力开放平台!
  18. 【Win10】电脑麦克风录音:设备调测
  19. Android shortcut的使用及源码分析
  20. Linux下安装Psi-Blast,HHblits和MUFoldSS,用于预测蛋白质二级结构

热门文章

  1. intel python加速效果初探
  2. ycsb两个阶段说明
  3. ES6中的异步对象Promise
  4. 网络请求之get post
  5. 2017-2018-1 我爱学Java 第一周 作业
  6. JQuery------获取input type=file中的文件内容
  7. Actionscript3.0动画编程中的几种特效举例
  8. day07 数据类型的内置方法(列表的内置方法)
  9. 《全栈性能Jmeter》-4JMeter脚本开发
  10. InfluxDB基本概念和操作