爬虫之urllib库

一、urllib的基本使用

import urllib.request

response=urllib.request.urlopen('http://www.baidu.com')
#获取当前爬取网页的状态码
print(response.getcode())
#decode():解码  字节数据转成字符串数据
# #data=response.read().decode('utf-8')
# data=response.read()
# print(data)


#写入字节流形式数据时,模式要用wb
# fandle=open('1.html','wb')
# fandle.write(data)
# fandle.close()


#-->如果将爬取到的网页以网页的形式保存在本地
# 方法一:
# 1》爬取一个网页将爬取到的内容读取出来赋给一个变量
# 2》以写入的方式打开一个本地文件,命名xxx.html网页格式
# 3》将1》得到的变量值写入该文件中
# 4》关闭文件


# 方法二:
#urlretrieve()函数直接将对应信息写入本地文件

# filename=urllib.request.urlretrieve('http://www.baidu.com',filename='2.html')

二、urllib设置headers

#方法一
import urllib.request
url='http://www.csdn.net/'
#1.构建headers
headers=('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36')
#2.创建一个自定义访问对象
opener=urllib.request.build_opener()
#3.添加请求头
opener.addheaders = [headers]
#4.用这个访问对象去做请求,获取html
data=opener.open(url).read()
#5.写入目标文件
fhandle=open('3.html','wb')
fhandle.write(data)

fhandle.close()

方法二:

#Request(url,headers)
import urllib.request
url='https://www.csdn.net/'
#1.构建headers,创建一个字典
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36',
         'Host': 'www.csdn.net'}
#2.创建一个Request请求对象
req=urllib.request.Request(url,headers=headers)
#3.发送请求,获取响应内容
data=urllib.request.urlopen(req).read()
#4.保存数据
fhandle=open('4.html','wb')
fhandle.write(data)

fhandle.close()

三、设置超时


import urllib.request
for i in range(1,50):
    try:
        file=urllib.request.urlopen('http://www.ibeifeng.com/',timeout=0.5)
        data=file.read()
        print(len(data))
    except Exception as e:

        print('出现异常-->'+str(e))

四、get请求和post请求

get:

# https://www.baidu.com/s?wd=hello

import urllib.request
#1.定义关键词
keyword='hello'
#2.构建url
url='http://www.baidu.com/s?wd='+keyword
#3.创建一个Request()对象
req=urllib.request.Request(url)
#4.获取响应内容
data=urllib.request.urlopen(req).read()
#5.数据保存
fhandle=open('5.html','wb')
fhandle.write(data)

fhandle.close()

# import urllib.request
keywd='范冰冰'
url='http://www.baidu.com/s?wd='
#1.urllib.request.quote():对关键词进行转码,转码之后再构造完整的URL
key_code=urllib.request.quote(keywd)
# print(key_code)
#2.拼接完整的URL
url_all=url+key_code
#3.创建Request对象
req=urllib.request.Request(url_all)
#4.发送请求,获取Html
data=urllib.request.urlopen(req).read()
#5.保存数据
fh=open('6.html','wb')
fh.write(data)
fh.close()

post:

import urllib.request
import urllib.parse
#测试网址:http://www.iqianyue.com/mypost
url='http://www.iqianyue.com/mypost/'
#构建请求头User-Agent
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36'}
#将数据使用urlencode进行编码处理后,
#再使用encode()设置utf-8编码,转为字节流数据
postdata=urllib.parse.urlencode({
    "name":'Tom',
    "pass":'a123456'
}).encode('utf-8')
#构建Request对象
req=urllib.request.Request(url,postdata,headers=headers)
#获取html
data=urllib.request.urlopen(req).read()
fd=open('7.html','wb')
fd.write(data)

fd.close()





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值