【爬虫】python爬虫从入门到放弃



什么是爬虫?

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

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

爬虫能够作什么?

你能够爬去妹子的图片,爬取本身想看看的视频。。等等你想要爬取的数据,只要你能经过浏览器访问的数据均可以经过爬虫获取mysql

爬虫的本质是什么?

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

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

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

爬虫就是请求网站并提取数据的自动化程序。其中 请求,提取,自动化 是爬虫的关键!下面咱们分析爬虫的基本流程正则表达式

爬虫的基本流程

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

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

解析内容
获得的内容多是HTML,能够用正则表达式,页面解析库进行解析,多是Json,能够直接转换为Json对象解析,多是二进制数据,能够作保存或者进一步的处理浏览器

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

什么是Request,Response

浏览器发送消息给网址所在的服务器,这个过程就叫作HTTP 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等信息,下图是请求请求百度时,全部的请求头部信息参数

请求体
请求是携带的数据,如提交表单数据时候的表单数据(POST)

Response中包含了什么

全部HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

响应状态

有多种响应状态,如:200表明成功,301跳转,404找不到页面,502服务器错误

  • 1xx消息——请求已被服务器接收,继续处理

  • 2xx成功——请求已成功被服务器接收、理解、并接受

  • 3xx重定向——须要后续操做才能完成这一请求

  • 4xx请求错误——请求含有词法错误或者没法被执行

  • 5xx服务器错误——服务器在处理某个正确请求时发生错误 常见代码: 200 OK 请求成功 400 Bad Request 客户端请求有语法错误,不能被服务器所理解 401 Unauthorized 请求未经受权,这个状态代码必须和WWW-Authenticate报头域一块儿使用 403 Forbidden 服务器收到请求,可是拒绝提供服务 404 Not Found 请求资源不存在,eg:输入了错误的URL 500 Internal Server Error 服务器发生不可预期的错误 503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常 301 目标永久性转移 302 目标暂时性转移

响应头

如内容类型,类型的长度,服务器信息,设置Cookie,以下图

响应体

最主要的部分,包含请求资源的内容,如网页HTMl,图片,二进制数据等

能爬取什么样的数据

网页文本:如HTML文档,Json格式化文本等
图片:获取到的是二进制文件,保存为图片格式
视频: 一样是二进制文件
其余:只要请求到的,均可以获取

如何解析数据

  1. 直接处理

  2. Json解析

  3. 正则表达式处理

  4. BeautifulSoup解析处理

  5. PyQuery解析处理

  6. XPath解析处理

关于抓取的页面数据和浏览器里看到的不同的问题

出现这种状况是由于,不少网站中的数据都是经过js,ajax动态加载的,因此直接经过get请求获取的页面和浏览器显示的不一样。

如何解决js渲染的问题?

分析ajax
Selenium/webdriver
Splash
PyV8,Ghost.py

怎样保存数据

文本:纯文本,Json,Xml等

关系型数据库:如mysql,oracle,sql server等结构化数据库

非关系型数据库:MongoDB,Redis等key-value形式存储







About Me

........................................................................................................................

● 本文做者:小麦苗,部份内容整理自网络,如有侵权请联系小麦苗删除

● 本文在itpub( http://blog.itpub.net/26736162 )、博客园( http://www.cnblogs.com/lhrbest )和我的weixin公众号( xiaomaimiaolhr )上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文博客园地址: http://www.cnblogs.com/lhrbest

● 本文pdf版、我的简介及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群号: 230161599 (满) 、618766405

● weixin群:可加我weixin,我拉你们进群,非诚勿扰

● 联系我请加QQ好友 646634621 ,注明添加原因

● 于 2018-12-01 06:00 ~ 2018-12-31 24:00 在魔都完成

● 最新修改时间:2018-12-01 06:00 ~ 2018-12-31 24:00

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,如有侵权或不当之处还请谅解

● 版权全部,欢迎分享本文,转载请保留出处

........................................................................................................................

小麦苗的微店 https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麦苗出版的数据库类丛书 http://blog.itpub.net/26736162/viewspace-2142121/

小麦苗OCP、OCM、高可用网络班 http://blog.itpub.net/26736162/viewspace-2148098/

小麦苗腾讯课堂主页 https://lhr.ke.qq.com/

........................................................................................................................

使用 weixin客户端 扫描下面的二维码来关注小麦苗的weixin公众号( xiaomaimiaolhr )及QQ群(DBA宝典)、添加小麦苗weixin, 学习最实用的数据库技术。

........................................................................................................................

欢迎与我联系

 

 




来自 “ ITPUB博客 ” ,连接:http://blog.itpub.net/26736162/viewspace-2285848/,如需转载,请注明出处,不然将追究法律责任。