python-初学爬虫

               





python-初学爬虫

爬虫:

网络爬虫又被称为网页蜘蛛,是按照一定的规则,自动的抓取万维网信息的程序的脚本。

URL:

URL,是统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

网页界面:

如何扒取网页,我们在浏览器中看到的界面是一幅幅优美的画面,其实是由浏览器呈现出来的,实质上是一段HTML代码。

urllib和urllib2基础

urllib和urllib2库是学习Python爬虫最基本的库,利用这个库我们可以得到网页的内容。之后利用正则表达式提取分析,才能得到想要的一些结果。

import urllib2

urllib2.urlopen(url,data,timeout)

urlopen接受三个参数:

    第一个url就是URL地址,

    第二个data是访问URL时要传送的数据,例如账号,密码等

    第三个timeout是设置超时时间。

第二三个参数可以不传送,data默认为空,timeout默认为socket._GLOBAL_DEFAULT_TIMEOUT第一个参数必须传送。

添加.read()参数可以获取网页内容。

构造Requset(推荐)

其实上面的urlopen参数可以传入一个request请求,它其实就是一个Request类的实例,构造时需要传入Url,Data等等的内容。

import urllib2

request = urllib2.Request("http://www.baidu.com")

response = urllib2.urlopen(request)

print response.read()

POST和GET数据传送

现在大多数的网站都是动态的,需要动态的传递参数给它,最常见的是登录注册的时候。

数据传送分为get和post两种方式。

POST方式:

values = {'username' : 'XXXX',  'password' : 'XXXX' }

data = urllib.urlencode(values)

url='https://mail.qq.com'

request = urllib2.Request(url,data)

response=urllib2.urlopen(request)

print response.read()

GET方式

最重要的区别是GET是直接以链接的方式访问

values = {'username' : 'XXXX',  'password' : 'XXXX' }

data = urllib.urlencode(values)

url='https://mail.qq.com'

geturl=url+"?"+data

request = urllib2.Request(geturl)

response=urllib2.urlopen(request)

print response.read()

url加?然后加编码后的参数

设置headers

由于一些网站禁止爬虫,可以在请求加上头信息(headers),伪装成浏览器访问。

其中,agent就是请求的身份,如果没有写入请求身份,那么服务器不一定会响应,所以可以在headers中设置agent。

扒取自己的博客:

url=’ http://blog.163.com/XXXX/’

user_agent="Mozilla/5.0 (Windows NT10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103Safari/537.36"

headers={"User-Agent":user_agent}

request=urllib2.Request(url,headers=headers)

有时候我们会发现爬取下来的界面是乱码,这是与网页的编码相关,所以我们可以对网页的代码进行转码,使乱码的网页可以让我们看懂。

查看网页编码:

import chardet

print chardet.detect(rawdata)

编码:

   encode和decode提供 str 和 unicode 这两种的类型的互相转化。

   encode 把 unicode 转化成 str(byte string)

decode 把 str(bytestring) 转化成 unicode

 

爬虫-中文乱码:

使用以下命令可以很好的处理中文乱码的问题。

.decode('gbk','ignore').encode('utf-8')




往期「精彩内容」,点击回顾

DNA测序历史 | CircRNA数据库 | Epigenie表观综合 | 癌症定位

BWA介绍  |  源码安装R包 | CancerLocator  | lme4 | 450K分析

乳腺癌异质性 |  BS-Seq  | 隐马模型 | Circos安装 |  Circos画图

KEGG标记基因 |  GDSC  |  Meta分析  |   R线性回归和相关矩阵

精彩会议及课程,点击回顾

计算表观遗传学大数据前沿学术论坛会议记实

哈尔滨医科大学2017年全国生物信息学暑期学校 

2017龙星课程系列(一)

2017龙星课程系列(二)
2017龙星课程系列(三)

2017龙星课程系列(四)

2017龙星课程系列(五)



上一篇:http访问请求的实现


下一篇:python爬虫框架scrapy实例详解(转载)