ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-初学爬虫

2021-03-26 07:52:09  阅读:288  来源: 互联网

标签:网页 headers python 爬虫 urllib2 url 初学 urlopen


               





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龙星课程系列(五)



标签:网页,headers,python,爬虫,urllib2,url,初学,urlopen
来源: https://blog.51cto.com/15127592/2672554

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有