爬虫学习(一)
爬虫简介
爬虫,生物上类比就是在互联网这张网行怕爬来爬去的蜘蛛,遇到猎物(想要的资源)就会抓取下来。
环境介绍
- Ubutu16.04
- Python2.7.12
- sublime text3.0
网页的实质
网页的实质是由HTML代码组成,爬虫爬来这些内容,通过代码进行分析过滤,得到需要图片和文字。
URL
URL,即统一资源定位符,也就是网址。互联网上的每个文件都有唯一的一个URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URL格式:
- 协议
- 存有该资源的主机IP地址(有时也包括端口号)
- 主机资源的具体地址,如目录和文件名等
URL是爬虫获取数据的基本依据,由一个明确的URL才能获取数据。
urllib2
这是python爬虫中需要用到的主要的库之一
示例1:
import urllib2
response = urllib2.urlopen("http://cn.bing.com")
print response.read()
这几行代码把的源码扒下来了,从输出看到构成该网页的HTML代码。
分析
response = urllib2.urlopen("http://cn.bing.com")
这行代码调用了urllib2库中的**urlopen**函数,该函数起到的作用是打开一个URL,并返回一个response对象。
print response.read()
read是response对象中的一个函数,可以返回对象中存储的内容,如果直接print对象的话,是返回对象本身的描述。
Request
示例1只是简单的示范,最好是能向urlopen的参数传入一个request请求。
request请求是一个Request类的实例,构造时需要传入url,data等内容。
使用request的好处在于在构建请求时还需要加入很多内容,构建request,服务器响应请求得到应答,逻辑上清晰明确。
POST和GET
现在大多数都是动态网页,需要动态的传递参数,它作出对应的反映
动态网页:结合了HTML以外的高级程序设计语言和数据库技术进行的网页编程技术生成的网页
数据传送分为POST和GET两种方式,其区别为:
GET是直接以链接形式访问,链接中包含类所有的参数,并可以直观的看到;POST则不会在网址上显示所有的参数,所以不能直接看到提交类什么参数。
POST方式:
上文中request参数中的data就是我们要传的数据,下面是POST的例子:
import urllib
import urllib2
values = {"username":"xxxxxx","password":"xxxxxx"}
data = urllib.urlencode(values) #urllib.urlencode方法将字典编码
url = "https://xxxxxxxx"
request = urllib2.Request(url,data) #构建request时传入url和data两个参数
response = urllib2.urlopen(request)
print response.read()
该例子是进行的是一个登录的过程,当然只是很简单的版本,具体的网站可能还需要具体的处理。
GET方式:
GET方式是构建出一个带参数的URL,传入request:
import urllib
import urllib2
values = {}
values['username'] = "xxxxxxxxxx"
values['password'] = 'xxxxxx'
data = urllib.urlencode(values)
url = "http://xxxxxxx"
geturl = url+"?"+data //‘?’后接data构成新的URL
request = urllib2.Request(geturl)
response = urllib2.urlopen(request)
print response.read()
使用GET,url会把传入的参数暴露出来,如果其中有一些比较隐私的参数,会有安全隐患。
总结:
初入爬虫坑,对于这些库还没有深入理解,目前只能简单的运用,继续加油!
TIP:
本文是对Python爬虫入门三之Urllib库的基本使用的个人整理。