爬取百度主页与使用标准库urllib.request.urlopen方法

urllib.request 模块定义了适用于在各种复杂情况下打开 URL(主要为 HTTP)的函数和类 — 例如基本认证、摘要认证、重定向、cookies 及其它。
官方文档提示对于更高级别的HTTP客户机接口,建议使用Requests包。
使用标准库中的urllib.request.urlopen(url,data = None,[ timeout,] *,cafile = None,capath = None,cadefault = False,context = None )方法。该方法参数简介如下:
url参数是提交的网络地址(地址全程,前端需要协议名,后端需要端口。比如http://192.168.1.1:80)。
data 参数是可选的通常使用不多。如果要添加 data ,它要是字节流编码格式的内容,即 bytes 类型,通过 bytes() 函数可以进行转化,另外如果你传递了这个 data 参数,它的请求方式就不再是 GET 方式请求,而是 POST 。
timeout可选的参数,以秒为单位指定用于阻止连接尝试之类的操作的超时(如果未指定,将使用全局默认超时设置)。
如果指定了context,则它必须是ssl.SSLContext描述各种SSL选项的实例。请参阅HTTPSConnection 以获取更多详细信息。
其他参数:
可选的cafile和capath参数为HTTPS请求指定一组受信任的CA证书。 cafile应该指向包含一堆 CA证书的单个文件,而capath应该指向哈希证书文件的目录。可以在中找到更多信息ssl.SSLContext.load_verify_locations()。

该cadefault参数被忽略。
具体内容参见官方文档

#爬取百度主页
import urllib.request

def clear():
    """清屏"""
    print('内容较多,显示3秒后翻页')
    time.sleep(3)
    OS = platform.system()
    if (OS == 'Windows'):
        os.system('cls')
    else:
        os.system('clear')
        
def linkBaidu():
        url = 'http://www.baidu.com'
        try:
            response = urllib.request.urlopen(url,timeout=3)
            #global result
            result = response.read().decode('utf-8')
        except:
            print("网络地址错误")
            exit()
        with open('baidu.txt','w',encoding='utf8') as f:
            f.write(result)
        print("获取url信息:response.geturl(): %s" %response.geturl())
        print("获取返回代码:response.getcode() %s" %response.getcode())
        print("获取返回信息:response.info() %s" %response.info())
        print("获取的网页内容已存入当前目录的baidu.txt中,请自行查看")
        
if __name__ == '__main__':
    linkBaidu()

简单的爬取指定信息

import urllib.request
response = urllib.request.urlopen("https://www.baidu.com")
print(response.status)  #打印响应状态
print(response.getheaders())

更多示例可以参考urllib.request详细介绍

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值