http://blog.sysuschool.com/u/mygod/index.html
请稍候,载入中。。。
 
请稍候,载入中。。。
2020-10-10 13:10:00
博文_关于爬虫

这阵子学的东西较杂,先说说爬虫,给自己留点资料,顺便做个总结梳理,加深印象。

 

什么是爬虫?

没学之前,觉得挺神秘,其实指的就是能模拟浏览器发送HTTP请求,欺骗服务器,获取响应数据的程序,理论上,凡是浏览器能做的的,爬虫也能做,比如爬取网站的图片或文字、抢票、网站投票等等。搜索引擎就是一个最大的爬虫,这种爬虫称通用爬虫,一般针对特定网站的爬虫程序,称聚焦爬虫。

 

要实现用程序代码去访问网站获取数据,而不是通过浏览器去做,首先要了解浏览器是如何请求及服务器是如何响应的过程,这个涉及HTTP传输协议,可以在chrome浏览器测试,实际上写爬虫的时候也离不开chrome浏览器分析请求和响应。

 

用户在浏览器地址栏输入url并回车,浏览器会向HTTP服务器发送HTTP请求(request),服务器接收请求后会返回响应(response),如返回用户请求的网页html数据、服务器连接状态码等,然后浏览器会对得到的html代码进行解析,如果网页中包含图片、jscsssrchref,会再次自动发出这些请求,获取相应的图片、cssjs,最后浏览器将页面渲染出来。

 

浏览器的请求,据说有8种方式,常用的有getpost请求,一般浏览器输入url回车、超链接和图片样式js的请求为get请求,post请求最典型的如表单提交,get请求时相应的请求数据在浏览器地址栏是可见的,而post请求在地址栏是不可见的,相对更安全,此外还可以通过ajax实现getpost请求。浏览器在发送请求时,除了发送请求的urlgetpost数据外,还会发送浏览器信息User-Agent、引用refererCookie等,这部分称请求头数据,可以在chrome浏览器的networkRequest Headers查到,服务器响应的数据则可在Response Headers中看到。

 

Python实现爬虫大致分两个阶段,一是发送请求获取数据,二是解析提取需要的数据,还可以有进一步的数据分析或数据可视化显示数据等。

 

模拟浏览器发送请求和获取数据,有urllib模块、requests模块等。

解析提取数据,可使用lxml模块(xpath语法)、BeatfulSoup模块等,也可以使用正则表达式进行提取。

至于数据分析,这个问题太大太深,先略过,至于数据可视化,有matplotlib可以绘制散点图、直方图等。


还有一种使用ajax的页面数据,这种比较特殊,因为ajax的数据在页面源代码中是看不到的,ajax技术能对页面进行局部刷新,一般通过js处理出来。有一个自动化测试模块selenium,本是用来进行网站自动化测试的,可以模拟人操作页面,配合浏览器驱动,可以用来做爬虫,chrome浏览器对应的是chromedriver。


还有就是用于爬虫的框架scrapy,这个是专业级的爬虫工具,现在是数据无价的时代,有许许多多的公司都需要数据,除了买,还得爬,本篇小结到此,后面继续。

mygod | 阅读全文 | 回复(0) | 引用通告 | 编辑
发表评论:
请稍候,载入中。。。
公告
请稍候,载入中。。。
时间记忆
请稍候,载入中。。。
最新日志
请稍候,载入中。。。
最新评论
请稍候,载入中。。。
最新回复
请稍候,载入中。。。
我的好友
我的相册
站点信息
请稍候,载入中。。。
生活因感动而精彩,理想在创造中放飞
Powered by Oblog.