python爬虫(1)

了解python的基本语法后就能够开始了,边学边巩固。php

学爬虫那什么是网络爬虫,如下是百度百科的定义:网络爬虫(又被称为网页蜘蛛,网络机器人,css

FOAF社区中间,更常常的称为网页追逐者),是一种按照必定的规则,自动地抓取万维网信息的程序或者脚本。html

另一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫python

 

找资源的源头应该是URL,这是我我的的理解:数据库

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

执行的版本是python2.7, 开发工具是JetBrains PyCharm 5.0缓存

==========================================================
import urllib2

response = urllib2.urlopen("http://www.baidu.com")
print response.read()

==========================================================
输出是一大堆html,css,js代码,后面要研究的是也是这些材料,具体说是解析器要作的。
网络爬虫的组成
在网络爬虫的系统框架中,主过程由控制器,解析器,资源库三部分组成。控制器的主要工做是负责给多线程中的各个爬虫线程分配工做任务。解析器的主要工做是下载网页,进行页面的处理,主要是将一些JS脚本标签、CSS代码内容、空格字符、HTML标签等内容处理掉,爬虫的基本工做是由解析器完成。资源库是用来存放下载到的网页资源,通常都采用大型的数据库存储,如Oracle数据库,并对其创建索引。
控制器
控制器是网络爬虫的中央控制器,它主要是负责根据系统传过来的URL连接,分配一线程,而后启动线程调用爬虫爬取网页的过程。
解析器
解析器是负责网络爬虫的主要部分,其负责的工做主要有:下载网页的功能,对网页的文本进行处理,如过滤功能,抽取特殊HTML标签的功能,分析数据功能。
资源库
主要是用来存储网页中下载下来的数据记录的容器,并提供生成索引的目标源。中大型的数据库产品有:Oracle、Sql Server等。
 
 

HTTP是基于请求和应答机制的--客户端提出请求,服务端提供应答。安全

urllib2用一个Request对象来映射你提出的HTTP请求,在它最简单的使用形式中你将用你要请求的服务器

地址建立一个Request对象,经过调用urlopen并传入Request对象,将返回一个相关请求response对象,网络

这个应答对象如同一个文件对象,因此你能够在Response中调用.read()。

==========================================================
import urllib2

req = urllib2.Request("http://www.baidu.com")
response = urllib2.urlopen(req)
print response.read()
==========================================================
以上代码更能体现http的过程。

在urlopen中除了"http:",URL一样可使用"ftp:","file:"等等来替代

1.GET请求的数据会附在URL以后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,

参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。

若是数据是英文字母/数字,原样发送,若是是空格,转换为+,若是是中文/其余字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。POST把提交的数据则放置在是HTTP包的包体中。

 

2."GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据,这个限制是特定的浏览器及服务器对它的限制。

3.POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不做数据修改,而这里安全的含义是真正的Security的含义,好比:经过GET提交数据,用户名和密码将明文出如今URL上,由于(1)登陆页面有可能被浏览器缓存,(2)其余人查看浏览器的历史纪录,那么别人就能够拿到你的帐号和密码了,除此以外,使用GET提交数据还可能会形成Cross-site request forgery攻击。
相关文章
相关标签/搜索