Python 爬虫学习稿(一)

本次学习的环境是基于Python 3.3.5,实验的工具是Pycharm 5.0.1
基础的知识我就不再介绍,比如HTTP的基础知识、爬虫的相关背景
直接开始爬虫的学习吧!

一、用Python抓取指定页面

常见的urllib2库在Python3.X的版本中改名啦!叫urllib.request了!
urlopen()可以接收三个参数即urlopen(url, data, timeout)
url即你要请求的url地址,data是访问这个url需要传送的数据,timeout是超时时间
url是必填参数,其余两个是可选参数
urllib.request.urlopen(url)会返回一个http.client.HTTPResponse对象
这个返回的对象可以使用read()方法,来返回数据

# encoding: utf-8

import urllib.request

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

这样一个脚本就可以让我们得到所填入的www.baidu.com这个网址的网页源码,你可以开启浏览器,然后按下F12来对照看是不是一样
如果我们不调用read这个方法,会打印出什么呢?会打印出下面这样一行
<http.client.HTTPResponse object at 0x0314B690>
这样就直接把这个对象的描述打印出来了,而不是具体内容了

二、构造Request

根据我们的习惯,我们应该当传入一个request的实例,我们可以改写上面的代码为

# encoding: utf-8

import urllib.request

request = urllib.request.Request("http://www.baidu.com")
response = urllib.request.urlopen(request)
print(response.read())

这样也是完全相同的效果,我们必须注意的是库是区分大小写的,Request写成request是不能被识别的,会报错
这样我们就完成了构建一个request,然后得到服务器对请求的应答,这样更符合直观的逻辑
需要说明的是,urllib.request.Request()是统一处理所有URL头的方法,你可以直接使用ftp://baidu.com也是可以的

三、传递表单数据

Web传递表单数据的常见方式有POST和GET两种方式,我们可以构造一个表单作为data,然后编码成标准形式,作为参数传递给Request对象
值得注意的是,编码所使用的库为urllib的函数而不是像之前的程序可以只引用一个urllib2库就可以了,Python 3.X的版本和和之前的2.X的版本差距还是真大
遇到这个错误TypeError: POST data should be bytes or an iterable of bytes. It cannot be of type str时,是需要在url编码后再使用utf-8进行编码,否则会出现这个类型错误。修改方法是)urllib.parse.urlencode(valu

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值