python urllib.request 爬虫 数据处理-python爬虫 urllib模块url编码处理
案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为"周杰伦'的页面数据)
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编码处理相关推荐
- python urllib.request 爬虫 数据处理-python 爬虫之 urllib库
文章更新于:2020-03-02 注:代码来自老师授课用样例. 一.初识 urllib 库 在 python2.x 版本,urllib 与urllib2 是两个库,在 python3.x 版本,二者合 ...
- python urllib.request 爬虫 数据处理-python之爬虫(三) Urllib库的基本使用
什么是Urllib Urllib是python内置的HTTP请求库 包括以下模块 urllib.request 请求模块 urllib.error 异常处理模块 urllib.parse url解析模 ...
- python urllib.request 爬虫 数据处理-Python爬虫学习之(二)| urllib进阶篇
作者:xiaoyu 微信公众号:Python数据科学 知乎:Python数据分析师 前情回顾,urllib的基本用法 urllib库的基本组成 利用最简单的urlopen方法爬取网页html 利用Re ...
- python urllib.request 爬虫 数据处理-Python网络爬虫(基于urllib库的get请求页面)
一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...
- python urllib.request 爬虫 数据处理-python爬虫1--urllib请求库之request模块
urllib为python内置的HTTP请求库,包含四个模块: request:最基本的HTTP请求模块, 只需要传入URL和参数 error:异常处理模块 parse:工具模块,处理URL,拆分.解 ...
- python urllib.request 爬虫 数据处理-python爬虫 urllib模块url编码处理详解
案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为"周杰伦'的页面数据) import urllib.request # 1.指定url url = 'https://www.s ...
- python urllib.request 爬虫 数据处理-python爬虫之json数据处理
# -*- coding: utf-8 -*- # @Time : 2019/11/5 23:18 # @Author : AForever # @Site : # @File : Spider_05 ...
- python urllib3 request 无返回结果_python urllib request urlopen请求网页返回bytes类型
首次调用read()时有返回,之后的调用一直返回b'' >>> f = request.urlopen('http://www.baidu.com/') >>> f ...
- python中request获取数据,Python 中request数据的获取
@app.route('/users', methods=['GET', 'POST']) def users(): print "Hello, World!" print(req ...
最新文章
- 山东计算机基础模拟题及答案,2016山东农信社考试模拟题--计算机基础知识答案(1)...
- QCOW2 — ROW/COW 快照技术原理解析
- Vue013_ vue组件化编码
- 蘑菇街2015校招 Java研发笔试题 详解,2015java
- uboot之fastboot烧录镜像
- java 手势识别_【人体分析-手势识别】-Java示例代码
- Windows服务器远程桌面访问(两种方法)
- 华为hcna认证有哪些优势?华为hcna认证好考吗?
- hybrid 单臂路由
- 如何在php中添加动图,PS如何制作gif动图
- Chfs 文件共享工具
- c语言浮点变量是什么意思,C语言中说的浮点型是什么意思呢 C语言的浮点数是什么...
- 他妈的 Python(1):怎么发起一个同步的 HTTP 请求
- 数据可视化笔记4 结构数据的可视化图形
- zblog技术导航网全站源码+数据
- 从学生到机器视觉工程师,我有话要说!
- php获取本机IP地址
- 概率论第二章知识点+错题总结
- Android 使用第三方字体
- ssm基于大数据的智能公交平台的设计与实现毕业设计源码261620
热门文章
- char nchar varchar nvarchar varchar2区别
- [UWP小白日记-14]正则表达式
- jquery的实时触发事件(textarea实时获取中文个数)
- 一个例子说明如何在DataSnap中使用FireDAC
- cassert与NDEBUG,_DEGUG
- php如何设定隐藏四位号码,PHP问题:php手机号码中间四位如何隐藏?
- 编程入门python语言是多大孩子学的-入门编程语言,让你想学Python的几个优点!...
- python在线课程价格-杭州python课程价格
- python代码块-python小数据池,代码块的最详细、深入剖析
- python简易图形-python简单图形界面GUI入门——easygui【转】