我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python爬虫进阶之如何使用urllib库

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python爬虫进阶之如何使用urllib库

这篇文章主要介绍了Python爬虫进阶之如何使用urllib库,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

python的数据类型有哪些?

python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和float(浮点型)。2.字符串,分别是str类型和unicode类型。3.布尔型,Python布尔类型也是用于逻辑运算,有两个值:True(真)和False(假)。4.列表,列表是Python中使用最频繁的数据类型,集合中可以放任何数据类型。5. 元组,元组用”()”标识,内部元素用逗号隔开。6. 字典,字典是一种键值对的集合。7. 集合,集合是一个无序的、不重复的数据组合。

python爬虫因其效率高开发迅速的优势受到广大程序员的青睐,python爬虫的使用依赖于本身各种库的功能,其中urllib库是python中的一个http请求库,含有四个模块,有着不同的功能,使用方法也有很多,本文向大家介绍urllib库的四个模块和四种使用方法:1、获取某个网站的方式;2、超时处理;3、简单解析-响应头;4、将爬虫伪装成服务器发出请求。

一、urllib库是什么?

urllib是python中的一个http请求库,借助urllib,我们可以向浏览器发出请求,只需向urllib库中的方法传入url和一些参数即可。

urllib库中包含以下模块:

1、urllib.request

http请求模块,用于模拟向浏览器发出请求的过程;

2、urllib.error

异常处理模块,当利用urllib.request模拟向浏览器发出请求时,如果出现请求错误,可以利用此模块捕获异常信息,然后进行重试或其他操作,以保证程序不会意外终止;

3、urllib.parse

包含了针对url的许多处理方法,如url拆分、url解析、url合并等;

4、urllib.robotparser

robots.txt解析模块,主要用于识别网站的robots.txt文件,判断哪些网站可以爬,那些网站不可爬。此模块不太经常被使用。

二、Python爬虫中常用的urllib方法

首先需要导入urllib模块,如下

import urllib.requestimport urllib.parse  # 解析器,将键值对按utf-8或其他形式解析

1、获取某个网站的方式

(1)获取一个get请求

response = urllib.request.urlopen("http://www.baidu.com")print(response.read().decode("utf-8"))   # 第二行的输出是对获取到的对象response的信息-网页源码进行utf-8的解码

(2)获取pose请求

data = bytes(urllib.parse.urlencode({"hello": "world"}), encoding='utf-8')  # 一般模拟用户登录时使用此种方式,在{}内加上cookie内容response = urllib.request.urlopen("https://baidu.com", data=data)print(response.read().decode("utf-8"))

采用post访问时需要传递表单信息,通过表单的封装才能访问post,代码中bytes将信息转换为二进制包。

当需要模拟浏览器发出请求时,必须用post形式来封装数据(用data封装),否则有405报错。

2、超时处理

当要访问的服务器排斥爬虫,或链接是死链接、网络不好等情况出现时,页面在一定的时间内会没有反应,这时可以设置一个时间限制,避免一直等待。

response = urllib.request.urlopen("https://baidu.com", timeout=0.1)print(response.read().decode("utf-8"))

若访问超时会出现如下报错,可以利用异常处理结束循环或者停止爬取该网页,向其他网页发送get请求。

try:    response = urllib.request.urlopen("http://www.baidu.com",timeout=0.1)    print(response.read().decode("utf-8"))except urllib.error.URLError as e:    print("time out!")

3、简单解析-响应头

网络爬虫有时会返回一些错误信息,此时我们可以返回响应状态码来大致判断报错类型。

response = urllib.request.urlopen("http://www.baidu.com")print(response.status)   # 返回状态码-200、404、418等print(response.getheaders())  # 返回头部所有信息

常见的状态码如418报错是因为访问的服务器发现该请求是一个爬虫,也即爬虫时常见的反爬机制,此时可改用requests库、添加header信息等方法解决。

4、将爬虫伪装成服务器发出请求

# 访问反爬的网址url = "http://www.douban.com"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"}req = urllib.request.Request(url=url, headers=headers, method="POST")  # req是请求对象而非响应对象response = urllib.request.urlopen(req)html = response.read().decode("utf-8")print(html)

代码中的headers来自浏览器页面,在chrome中进入想访问的浏览页面,点击F12或右键检查-Network中,即可查到User-Agent信息,粘贴到代码中(需注意大小写及空格,代码中的格式要和浏览器信息一致)。

user-agent的作用是告诉所访问的服务器,我们是何种类型的机器(浏览器),若只用User-Agent会返回百度验证界面,可加入Cookie返回所要爬取的结果页面

三、爬虫频率过快导致失败

现在很多网站对异常用户访问网站频次过高设置了安全访问机制。在这个时候,如果你想继续访问这个网站,HTTP代理ip非常重要。当前ip地址有限,可以更改新的ip地址,保证爬虫的顺利进行。

推荐使用优质的代理ip资源,保证爬虫程序的顺利进行。

感谢你能够认真阅读完这篇文章,希望小编分享的“Python爬虫进阶之如何使用urllib库”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python爬虫进阶之如何使用urllib库

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python爬虫进阶之如何使用urllib库

这篇文章主要介绍了Python爬虫进阶之如何使用urllib库,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python的数据类型有哪些?python的数据类型:1. 数字类
2023-06-14

Python爬虫之Urllib库的基本使

# get请求import urllib.requestresponse = urllib.request.urlopen("http://www.baidu.com")print(response.read().decode('utf-8
2023-01-30

Python爬虫进阶之Beautiful Soup库详解

一、Beautiful Soup库简介 BeautifulSoup4 是一个 HTML/XML 的解析器,主要的功能是解析和提取 HTML/XML 的数据。和 lxml 库一样。 lxml 只会局部遍历,而 BeautifulSoup4 是
2022-06-02

Python爬虫库urllib的使用教程详解

Python 给人的印象是抓取网页非常方便,提供这种生产力的,主要依靠的就是 urllib、requests这两个模块。本文主要给大家介绍一下urllib的使用,感兴趣的可以了解一下
2022-11-21

python爬虫urllib库中parse模块urlparse的使用方法

这篇文章主要介绍了python爬虫urllib库中parse模块urlparse的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在python爬虫urllib库中,u
2023-06-14

Python爬虫Requests库如何使用

本篇内容主要讲解“Python爬虫Requests库如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python爬虫Requests库如何使用”吧!1、安装 requests 库因为学习过
2023-07-06

Python网络爬虫requests库如何使用

这篇文章主要讲解了“Python网络爬虫requests库如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python网络爬虫requests库如何使用”吧!1. 什么是网络爬虫简单来
2023-07-06

urllib库如何在python中使用

今天就跟大家聊聊有关urllib库如何在python中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、请求模块:urllib.requestpython2import urll
2023-06-14

python 爬虫如何使用代理IP

作为一名数据采集者,我们都是知道,一个网站要是频繁访问都会被封IP,那要怎么解决这个问题呢?不可能一直频繁的更换设备,不光数据不能同步,这些设备的成本也是无法预计的,所以这个时候就需要代理IP了。以亿牛云(https://www.16yun
2023-06-02

如何使用Python爬虫爬取网站图片

这篇文章主要介绍了如何使用Python爬虫爬取网站图片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。此次python3主要用requests,解析图片网址主要用beautif
2023-06-22

如何使用ip代理池进行爬虫

这篇文章主要讲解了“如何使用ip代理池进行爬虫”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用ip代理池进行爬虫”吧!1、使用前需要做一个测试,就是测试这个ip是否有效。方法是用cur
2023-06-20

如何使用python爬虫抓取弹幕

这篇文章主要讲解了“如何使用python爬虫抓取弹幕”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用python爬虫抓取弹幕”吧!一、爬虫是什么?百度百科这样说:自动获取网页内容的程序
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录