零基础学 Python(2018 版)
尹会生
前游戏公司技术总监,前新浪网技术经理
80146 人已学习
新⼈⾸单¥68
课程目录
已完结/共 72 讲
第一章 :Python介绍和安装 (3讲)
第二章 :Python基础语法 (3讲)
第四章 :条件与循环 (5讲)
第五章 :映射与字典 (2讲)
第六章 :文件和输入输出 (2讲)
第七章 :错误和异常 (1讲)
第九章 :模块 (1讲)
第十章 :语法规范 (1讲)
第十一章 :面向对象编程 (4讲)
第十二章 :多线程编程 (2讲)
第十六章 :综合案例 & 结课测试 (1讲)
特别放送 (1讲)
零基础学 Python(2018 版)
登录|注册
留言
14
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 63 | 网页数据的采集与urllib库
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | Python语言的特点
02 | Python的发展历史与版本
03 | Python的安装
04 | Python程序的书写规则
05 | 基础数据类型
06 | 变量的定义和常用操作
07 | 序列的概念
08 | 字符串的定义和使用
09 | 字符串的常用操作
10 | 元组的定义和常用操作
11 | 列表的定义和常用操作
12 | 条件语句
13 | for循环
14 | while循环
15 | for循环语句中的if嵌套
16 | while循环语句中的if嵌套
17 | 字典的定义和常用操作
18 | 列表推导式与字典推导式
19 | 文件的内建函数
20 | 文件的常用操作
21 | 异常的检测和处理
22 | 函数的定义和常用操作
23 | 函数的可变长参数
24 | 函数的变量作用域
25 | 函数的迭代器与生成器
26 | Lambda表达式
27 | Python内建函数
28 | 闭包的定义
29 | 闭包的使用
30 | 装饰器的定义
31 | 装饰器的使用
32 | 自定义上下文管理器
33 | 模块的定义
34 | PEP8编码规范
35 | 类与实例
36 | 如何增加类的属性和方法
37 | 类的继承
38 | 类的使用-自定义with语句
39 | 多线程编程的定义
40 | 经典的生产者和消费者问题
41 | Python标准库的定义
42 | 正则表达式库re
43 | 正则表达式的元字符
44 | 正则表达式分组功能实例
45 | 正则表达式库函数match与search的区别
46 | 正则表达式库替换函数sub()的实例
47 | 日期与时间函数库
48 | 数学相关库
49 | 使用命令行对文件和文件夹操作
50 | 文件与目录操作库
51 | 机器学习的一般流程与NumPy安装
52 | NumPy的数组与数据类型
53 | NumPy数组和标量的计算
54 | NumPy数组的索引和切片
55 | pandas安装与Series结构
56 | Series的基本操作
57 | Dataframe的基本操作
58 | 层次化索引
59 | Matplotlib的安装与绘图
60 | 机器学习分类的原理
61 | Tensorflow的安装
62 | 根据特征值分类的模型和代码
63 | 网页数据的采集与urllib库
64 | 网页常见的两种请求方式get和post
65 | HTTP头部信息的模拟
66 | requests库的基本使用
67 | 结合正则表达式爬取图片链接
68 | Beautiful Soup的安装和使用
69 | 使用爬虫爬取新闻网站
70 | 使用爬虫爬取图片链接并下载图片
强势回归:零基础学Python2022版来啦!
71 | 如何分析源代码并设计合理的代码结构&结课测试
本节摘要

课程源码、课件及课后作业地址:

https://gitee.com/geektime-geekbang/geekbangpython

HTML 详细教程请参考:

https://developer.mozilla.org/zh-CN/docs/Learn/HTML

登录 后留言

全部留言(14)

  • 最新
  • 精选
楚耳
老师 我看你代码里面编码问题的时候,有时候用 decode("utf-8")这个方法,有时又是直接传个encoding="utf-8"这个参数,你们详细讲讲这两个方法吗,有点不知道什么时候该用哪种方法?

作者回复: 我想你指的decode和encoding应该是这两个Python语句: response = request.urlopen('http://httpbin.org/post', data=data) print(response.read().decode('utf-8')) data = bytes(parse.urlencode(dict), encoding='utf8') 这里从字面来看,decode()是函数,encoding是bytes()函数的参数,他们不能放在一起对比,就像雷锋和雷锋塔一样 那从功能上来看,设计encode()、decode()、bytes()、str()这些函数是做什么用的呢? 在Python3中严格区分了字符串和字节的概念,在网络的底层传输的文字就是字节形式,而上层是字符串形式,我们”看得懂“的是字符串,但是很多底层函数需要用到字节形式; 就必然产生了字符串和字节之间相互转换的需求,那么上面提到的几个函数就是用来做字符串和字节之间转换的。 如我们需要字符串转换成字节,可以使用bytes()或encode()进行转换: s='你好' b1=s.encode('utf-8') # 使用utf8编码将字符串转换为字节 b2=bytes(s, encoding='utf-8') #和上面功能一样 那如果将字节转换回字符串呢? b1.decode('utf-8') str(b2, encoding='utf-8') 这就是这几个函数之间的区别了

2018-07-07
13
Neo
尹老师,在pycharm的右下角已经显示了“utf-8”的设置,请问这个设置的作用是?和代码中的“.decode'utf-8'”有什么区别?

作者回复: 右下角是提示,是pycharm软件根据文件内容自动检测到的, .decode 是程序按照utf-8 编码做的解码工作

2019-05-11
1
怀揣梦想的学渣
视频03:42的第五行代码,我这pycharm没有看到自动提示,个人编码时,如何知道有read这种用法呢。

作者回复: 除了利用IDE以外, 还有个更权威的参考位置叫做官方文档。 官方文档查找起来的便利性要比IDE差一些。但是主要有三个地方可以找到这些函数的定义和使用参考 1 语言参考 https://docs.python.org/zh-cn/3.8/reference/index.html#reference-index 2 标准库 https://docs.python.org/zh-cn/3.8/library/index.html 3 内置函数 https://docs.python.org/zh-cn/3.8/library/functions.html 如果是第三方库则要看第三方库的文档,比如第三方库requests,要找到它的文档,需要在这里: https://docs.python-requests.org/zh_CN/latest/ 找到该库下函数的参考

2022-02-03
跳跳
UTF-8 字符集(编码) 是变长的,不一定三个字节。

作者回复: UTF-8是UNICODE的一种变长字符编码 ,长度在1至6字节,我在视频中的描述不够准确,感谢指正

2021-11-08
Mr wind
在pycharm里使用response.没有read的提示呢,写完read()后再.也没有decode的提示,是这种函数是不提示的吗

作者回复: pycharm会根据类型推断进行提示,类似 dir(类型),看支持什么方法,后面就提示哪些可使用的方法

2020-02-05
Mangena_
辛苦尹老师帮忙看下呗,我运行完代码,最后一行报错如下:urllib.error.URLError: <urlopen error timed out> 请问这个是什么原因,应该怎么解决哇?~

作者回复: 连接超时。要么是网速太慢,要么是dns解析的时间过长,要么是网站响应过慢,都会导致 urlopen超时,需要增加timeout时间,

2019-12-27
2
森林
代码如下,老师请问下是什么原因报错呢? from urllib import request url = 'http://www.baidu.com' response = request.urlopen(url,timeout=1) print(response.read().decode('utf-8')) 运行后的错误提示如下: Traceback (most recent call last): File "C:/Users/Administrator.USER-20190120DJ/PycharmProjects/untitled/63urllib.py", line 8, in <module> response = request.urlopen(url,timeout=1) NameError: name 'request' is not defined Process finished with exit code 1

作者回复: 没有复现你的问题,是python3的那个具体版本? 'request' is not defined 是urllib目录里没有request这个方法

2019-10-03
八点二十
from urllib import request url = 'http://www.baidu.com' response = request.urlopen(url,timeout=5) print(response.read().decode('utf-8')) 老师以上是我的代码运行时下面报错了是什么原因 File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 222, in urlopen return opener.open(url, data, timeout) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 525, in open response = self._open(req, data) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 543, in _open '_open', req) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 503, in _call_chain result = func(*args) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 1345, in http_open return self.do_open(http.client.HTTPConnection, req) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 1320, in do_open r = h.getresponse() File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/http/client.py", line 1321, in getresponse response.begin() File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/http/client.py", line 296, in begin version, status, reason = self._read_status() File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/http/client.py", line 257, in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/socket.py", line 589, in readinto return self._sock.recv_into(b) socket.timeout: timed out

作者回复: 出现大段错误时候不要慌,先从最下面的错误提示看。 这里的socket是建立网络连接的功能,那么time out 是表示连接超时,也就是你到达对方的网络不通。

2019-01-01
Leolee
网络库有三个:urllib、requests、BeautifulSoup,前两个是用于数据收集和下载的库,最后一个是格式处理库。 requests是urllib库中的一个模块。 from urllib import request import urllib url = 'http://www.baidu.com' reponse = request.urlopen(url,timeout=1) print(reponse) #这里返回的就是一堆无格式的源代码 print(reponse.read()) #这里返回的是html文档格式的源代码,相当于浏览器的源代码 print(reponse.read().decode("utf-8")) #这里返回的是已经被utf-8解码过的
2021-04-19
2
Goal
今日收获,老师关于编码的解释,相当通俗易懂,很解渴,有种对编码感性的认识; “read 直接读是按单个字节解释出来的,又因为中文编码往往一个中文占用多个byte,所以出现乱码,解决方式就是,read的时候,指定使用原有的编码方式做解析,比如:通用的编码方式 utf-8,现在一般的网页都是采用utf这种万国码”
2019-12-27
1
收起评论