案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为"周杰伦'的页面数据)

import urllib.request

# 1.指定url

url = 'https://www.sogou.com/web?query=周杰伦'

'''

2.发起请求:使用urlopen函数对指定的url发起请求,

该函数返回一个响应对象,urlopen代表打开url

'''

response = urllib.request.urlopen(url=url)

# 3.获取响应对象中的页面数据:read函数可以获取响应对象中存储的页面数据(byte类型的数据值)

page_text = response.read()

# 4.持久化存储:将爬取的页面数据写入文件进行保存

with open("sougou.html","wb") as f:

f.write(page_text)

print("写入数据成功")

f.close()

编码错误

【注意】上述代码中url存在非ascii编码的数据,则该url无效。如果对其发起请求,则会报如下错误:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 15-17: ordinal not in range(128)

url的特性:url不可以存在非ASCII编码字符数据,url必须为ASCII编码的数据值。所以我们在爬虫代码中编写url时,如果url中存在非ASCII编码的数据值,则必须对其进行ASCII编码后,该url方可被使用。

上面的“周杰伦” 不是ASCII编码字符数据,所以url就会变成无效的url,不符合url特性,所以报错误

所以必须对url中的非ascii的数据进行ascii的编码,则该url方可被发起请求:

需要用到 urllib.parse

方法 1:使用quote函数

quote函数作用:对url中所存在的特殊字符进行ASCII的编码,把url中的非ascii编码的字符单独取出来,使用quote函数进行转码,

转码之后,把转码的结果拼接到原有的url当中。

import urllib.request

import urllib.parse

# 1.指定url

url = 'https://www.sogou.com/web?query=周杰伦'

word = urllib.parse.quote("周杰伦")

# 查看转码后结果

print(word)

# %E5%91%A8%E6%9D%B0%E4%BC%A6

from urllib.request import urlopen

import urllib.parse

# 1.指定url

url = 'https://www.sogou.com/web?query='

# url的特性:url不可以存在非ASCII编码字符数据

word = urllib.parse.quote("周杰伦")

# 将编码后的数据值拼接回url中

url = url+word # 有效url

'''

2.发起请求:使用urlopen函数对指定的url发起请求,

该函数返回一个响应对象,urlopen代表打开url

'''

response = urlopen(url=url)

# 3.获取响应对象中的页面数据:read函数可以获取响应对象中存储的页面数据(byte类型的数据值)

page_text = response.read()

# 4.持久化存储:将爬取的页面数据写入文件进行保存

with open("周杰伦.html","wb") as f:

f.write(page_text)

print("写入数据成功")

以上就是本文的全部内容,希望对大家的学习有所帮助

您可能感兴趣的文章:

python urllib.request 爬虫 数据处理-python爬虫 urllib模块url编码处理相关推荐

  1. python urllib.request 爬虫 数据处理-python 爬虫之 urllib库

    文章更新于:2020-03-02 注:代码来自老师授课用样例. 一.初识 urllib 库 在 python2.x 版本,urllib 与urllib2 是两个库,在 python3.x 版本,二者合 ...

  2. python urllib.request 爬虫 数据处理-python之爬虫(三) Urllib库的基本使用

    什么是Urllib Urllib是python内置的HTTP请求库 包括以下模块 urllib.request 请求模块 urllib.error 异常处理模块 urllib.parse url解析模 ...

  3. python urllib.request 爬虫 数据处理-Python爬虫学习之(二)| urllib进阶篇

    作者:xiaoyu 微信公众号:Python数据科学 知乎:Python数据分析师 前情回顾,urllib的基本用法 urllib库的基本组成 利用最简单的urlopen方法爬取网页html 利用Re ...

  4. python urllib.request 爬虫 数据处理-Python网络爬虫(基于urllib库的get请求页面)

    一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...

  5. python urllib.request 爬虫 数据处理-python爬虫1--urllib请求库之request模块

    urllib为python内置的HTTP请求库,包含四个模块: request:最基本的HTTP请求模块, 只需要传入URL和参数 error:异常处理模块 parse:工具模块,处理URL,拆分.解 ...

  6. python urllib.request 爬虫 数据处理-python爬虫 urllib模块url编码处理详解

    案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为"周杰伦'的页面数据) import urllib.request # 1.指定url url = 'https://www.s ...

  7. python urllib.request 爬虫 数据处理-python爬虫之json数据处理

    # -*- coding: utf-8 -*- # @Time : 2019/11/5 23:18 # @Author : AForever # @Site : # @File : Spider_05 ...

  8. python urllib3 request 无返回结果_python urllib request urlopen请求网页返回bytes类型

    首次调用read()时有返回,之后的调用一直返回b'' >>> f = request.urlopen('http://www.baidu.com/') >>> f ...

  9. python中request获取数据,Python 中request数据的获取

    @app.route('/users', methods=['GET', 'POST']) def users(): print "Hello, World!" print(req ...

最新文章

  1. 山东计算机基础模拟题及答案,2016山东农信社考试模拟题--计算机基础知识答案(1)...
  2. QCOW2 — ROW/COW 快照技术原理解析
  3. Vue013_ vue组件化编码
  4. 蘑菇街2015校招 Java研发笔试题 详解,2015java
  5. uboot之fastboot烧录镜像
  6. java 手势识别_【人体分析-手势识别】-Java示例代码
  7. Windows服务器远程桌面访问(两种方法)
  8. 华为hcna认证有哪些优势?华为hcna认证好考吗?
  9. hybrid 单臂路由
  10. 如何在php中添加动图,PS如何制作gif动图
  11. Chfs 文件共享工具
  12. c语言浮点变量是什么意思,C语言中说的浮点型是什么意思呢 C语言的浮点数是什么...
  13. 他妈的 Python(1):怎么发起一个同步的 HTTP 请求
  14. 数据可视化笔记4 结构数据的可视化图形
  15. zblog技术导航网全站源码+数据
  16. 从学生到机器视觉工程师,我有话要说!
  17. php获取本机IP地址
  18. 概率论第二章知识点+错题总结
  19. Android 使用第三方字体
  20. ssm基于大数据的智能公交平台的设计与实现毕业设计源码261620

热门文章

  1. char nchar varchar nvarchar varchar2区别
  2. [UWP小白日记-14]正则表达式
  3. jquery的实时触发事件(textarea实时获取中文个数)
  4. 一个例子说明如何在DataSnap中使用FireDAC
  5. cassert与NDEBUG,_DEGUG
  6. php如何设定隐藏四位号码,PHP问题:php手机号码中间四位如何隐藏?
  7. 编程入门python语言是多大孩子学的-入门编程语言,让你想学Python的几个优点!...
  8. python在线课程价格-杭州python课程价格
  9. python代码块-python小数据池,代码块的最详细、深入剖析
  10. python简易图形-python简单图形界面GUI入门——easygui【转】