当前位置: 首页 > article >正文

爬虫入门urllib 和 request(二)

文章目录

      • 1、urllib介绍
      • 2、urllib的基本方法介绍
        • 2.1 urllib.Request
        • 2.2 response.read()
      • 3、urllib请求百度首页的完整例子
      • 4、小结

1、urllib介绍

除了requests模块可以发送请求之外, urllib模块也可以实现请求的发送,只是操作方法略有不同!

urllib在python中分为urllib和urllib2,在python3中为urllib

下面以python3的urllib为例进行讲解

2、urllib的基本方法介绍

2.1 urllib.Request
  1. 构造简单请求

    import urllib
    #构造请求
    request = urllib.request.Request("http://www.baidu.com")
    #发送请求获取响应
    response = urllib.request.urlopen(request)
    
  2. 传入headers参数

    import urllib
    #构造headers
    headers = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"} 
    #构造请求
    request = urllib.request.Request(url, headers = headers)
    #发送请求
    response = urllib.request.urlopen(request)
    
  3. 传入data参数 实现发送post请求(示例)

    import urllib.request
    import urllib.parse
    import json
    
    url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15',
    
    }
    data = {
        'cname': '',
        'pid': '',
        'keyword': '北京',
        'pageIndex': 1,
        'pageSize': 10,
    }
    # 使用post方式
    # 需要
    data = urllib.parse.urlencode(data).encode('utf-8')
    req = urllib.request.Request(url, data=data, headers=headers)
    res = urllib.request.urlopen(req)
    print(res.getcode())
    print(res.geturl())
    data = json.loads(res.read().decode('utf-8'))
    # print(data)
    for i in data['Table1']:
    	print(i)
    
2.2 response.read()

获取响应的html字符串,bytes类型

#发送请求
response = urllib.request.urlopen("http://www.baidu.com")
#获取响应
response.read()

3、urllib请求百度首页的完整例子

import urllib.request

import json
url = 'http://www.baidu.com'
#构造headers
headers = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"}
#构造请求
request = urllib.request.Request(url, headers = headers)
#发送请求
response = urllib.request.urlopen(request)
#获取html字符串
html_str = response.read().decode('utf-8')
print(html_str)

4、小结

  1. urllib.request中实现了构造请求和发送请求的方法
  2. urllib.request.Request(url,headers,data)能够构造请求
  3. urllib.request.urlopen能够接受request请求或者url地址发送请求,获取响应
  4. response.read()能够实现获取响应中的bytes字符串

http://www.kler.cn/a/383191.html

相关文章:

  • Canoe E2E校验自定义Checksum算法
  • 智能座舱进阶-应用框架层-Jetpack主要组件
  • 题解 洛谷 Luogu P1135 奇怪的电梯 广度优先搜索 BFS C/C++
  • 一篇文章学会HTML
  • 前端开发 之 12个鼠标交互特效上【附完整源码】
  • python round四舍五入和decimal库精确四舍五入
  • Backend - Python 爬取网页数据并保存在Excel文件中
  • 【React】JSX规则
  • 产品经理必备秘籍:打造有效的产品 Roadmap
  • 原生鸿蒙应用市场:赋能开发者全生命周期服务体验
  • GAN的基本原理
  • Linux学习笔记之vim入门
  • 【数据结构】二叉树——层序遍历
  • HTML5+css3(伪类,动态伪类,结构伪类,否定伪类,UI伪类,语言伪类,link,hover,active,visited,focus)
  • 网络优化如何利用改IP软件解除地域限制
  • VBA02-初识宏——EXCEL录像机
  • Windows核心编程笔记——DLL基础
  • 【AI视频换脸整合包及教程】AI换脸新星:Rope——让换脸变得如此简单
  • LeetCode题练习与总结:O(1) 时间插入、删除和获取随机元素 - 允许重复--381
  • Air780E基于LuatOS编程开发
  • web实操3——servlet
  • 短剧APP系统开发,数字化微短剧时代
  • SpringBoot框架学习总结 及 整合 JDBC Mybatis-plus JPA Redis 我的学习笔记
  • 《Qwen2-VL》论文精读【下】:发表于2024年10月 Qwen2-VL 迅速崛起 | 性能与GPT-4o和Claude3.5相当
  • 《Java 实现选择排序:原理剖析与代码详解》
  • 手动切换python版本