python爬虫

Posted 唯你如我心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫相关的知识,希望对你有一定的参考价值。

什么是爬虫?

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

  其实通俗的讲就是通过程序去获取web页面上自己想要的数据,也就是自动抓取数据

爬虫本质 :

  模拟浏览器打开网页,获取网页中我们想要的那部分数据

  浏览器打开网页的过程:
    当你在浏览器中输入地址后,经过DNS服务器找到服务器主机,向服务器发送一个请求,服务器经过解析后发送给用户浏览器结果,包括html,js,css等文件内容,浏览器解析出来最后呈现给用户在浏览器上看到的结果

    所以用户看到的浏览器的结果就是由HTML代码构成的,我们爬虫就是为了获取这些内容,通过分析和过滤html代码,从中获取我们想要资源(文本,图片,视频.....)

爬虫的基本流程 :

  发起请求
    通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应

  获取响应内容
    如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型

  解析内容
    得到的内容可能是HTML,可以用正则表达式,页面解析库进行解析,可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理

  保存数据
    保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件

什么是Request, Response :

  浏览器发送消息给网址所在的服务器,这个过程就叫做HTPP Request

  服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应的处理,然后把消息回传给浏览器,这个过程就是HTTP Response

  浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后展示

  Request中包含什么 :

  请求方式

    主要有:GET/POST两种类型常用,另外还有HEAD/PUT/DELETE/OPTIONS
GET和POST的区别就是:请求的数据GET是在url中,POST则是存放在头部

    GET:向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问

    POST:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

    HEAD:与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

    PUT:向指定资源位置上传其最新内容。

    OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用‘*‘来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。

    DELETE:请求服务器删除Request-URI所标识的资源。

  请求URL

    URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

    URL的格式由三个部分组成:
    第一部分是协议(或称为服务方式)。
    第二部分是存有该资源的主机IP地址(有时也包括端口号)。
    第三部分是主机资源的具体地址,如目录和文件名等。

    爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据。

  请求头

    包含请求时的头部信息,如User-Agent,Host,Cookies等信息,下图是请求请求百度时,所有的请求头部信息参数

以上是关于python爬虫的主要内容,如果未能解决你的问题,请参考以下文章

Python 爬虫的入门教程都有哪些值得推荐的?

求编程大佬 Python 爬虫

Python为啥叫爬虫?

python爬虫最全总结

python爬虫最全总结

Python为啥会被叫爬虫?