介绍
在写爬虫的我们一般使用 Scrapy 和PySpider。pyspider上手更简单,操作更加简便,因为它增加了 WEB 界面,写爬虫迅速,集成了phantomjs,可以用来抓取js渲染的页面。Scrapy自定义程度高,比 PySpider更底层一些,适合学习研究,需要学习的相关知识多,不过自己拿来研究分布式和多线程等等是非常合适的。*** 但是***我在这里所用的是python中***urllib***里的方法。
原因:
在装Scrapy,我们需要装python2.7的版本(因为还没有推出3以上的版本)python2和python3是两个独立的版本(因为python3是python2的大升级,以致python2写的程序python3有小部分运行不得)如果安装两个版本会涉及到优先级的问题,即对于.py文件打开用哪个打开(python2还是python3)
什么是urllib库:
Urllib是python内置的HTTP请求库
包括以下模块
urllib.request 请求模块
urllib.response 响应模块
urllib.error 异常处理模块
urllib.parse url 解析模块
urllib.robotparser 解析模块
使用哪些模块:
在个小程序中我们使用urllib.request 请求模块和urllib.parse url解析模块与json库这三个工具就够了
什么叫HTTP请求:
是指从客户端到服务器端的请求消息。包括:消息首行中,对资源的请求方法、资源的标识符及使用的协议。通俗来讲,我们需要访问网站而我们就是客户端,我们要访问的网站就是访问别人的服务器,也就是服务端。比如我进淘宝,我的电脑会发送信息给淘宝的服务器,告诉淘宝服务器,那么淘宝服务器将数据传输给我,我的浏览器将这些数据进行解释,这时候我们才能看到淘宝页面。类比: 这就好比我拜访朋友,我想去朋友家,先敲门(客户端发送信息给服务器),朋友听到敲门声(服务器收到客户端的请求),朋友打开门(服务器将信息传输给客户端)。因为朋友家有限,能招待的客人有限,服务器也是一样,如果遇到非人类恶意访问(用程序访问比如每秒访问几十次甚至更多),那么会恶意占用服务器内存,那么其他人就访问不了。试想一下如果双十一有人恶意访问淘宝,导致别人访问不了淘宝,按淘宝一秒上万的成交额来算,那么淘宝会损失多少钱,所以对于中大型企业的网站都有检测恶意访问 ip,发现后就将该 ip 拉黑,这个 ip 就无法访问被攻击公司的网站了。
首先我们通过urllib.request里urlopen方法发送请求
这是python官方的urllib.request的解释(引用的重点用斜体加粗表示)
The urllib.request module defines functions and classes which help in opening URLs (mostly HTTP) in a complex world — basic and digest authentication, redirections, cookies and more.
urlopen方法:
urllib.request.urlopen(url, dat