python补充urllib教程,Python爬虫之urllib基础用法教程

综述

本系列文档用于对Python爬虫技术进行简单的教程讲解,巩固自己技术知识的同时,万一一不小心又正好对你有用那就更好了。

Python 版本是3.7.4

urllib库介绍

它是 Python 内置的HTTP请求库,也就是说我们不需要额外安装即可使用,它包含四个模块(主要对前三个模块进行学习):

request : 它是最基本的 HTTP 请求模块,我们可以用它来模拟发送一请求,就像在浏览器里输入网址然后敲击回车一样,只需要给库方法传入 URL 还有额外的参数,就可以模拟实现这个过程了。

error : 异常处理模块,如果出现请求错误,我们可以捕获这些异常,然后进行重试或其他操作保证程序不会意外终止。

parse : 用于解析URL,提供了许多URL处理方法,比如拆分、解析、合并等等的方法,以及对参数的拼接等待。

robotparser : 主要是用来识别网站的robots.txt协议文件,然后判断网站的那些数据可以爬,哪些数据不可以爬的,其实用的比较少。

urllib.request 介绍

urlopen()

1.参数说明(仅写了四个最常用的参数)

url : 爬取目标的URL;

data : 请求参数,如果设置该参数,则请求默认为post请求;没有默认为get请求;

timeout : 用于设置超时时间,单位为秒;

context : 必须是一个ssl.SSLContext类型,用来指定SSL设置,忽略未认证的CA证书;

2.具体用法

GET 请求方式

# 导入urllib库

import urllib.request

# 向指定的url发送请求,并返回服务器响应的类文件对象

url = "http://www.baidu.com"

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

print(type(response))

# 类文件对象支持文件对象的操作方法,如read()方法读取文件全部内容,返回字符串

html = response.read()

# html = response.readline() # 读取一行

# html = response.readlines() # 读取多行,返回列表

# 打印响应结果(byte类型)

print(html)

# 打印响应结果(utf-8类型)

# 二进制和字符串之间的相互转码使用 encode() 和 decode() 函数

# encode() 和 decode() 可带参数,不写默认utf-8,其他不再特别说明

print(html.decode())

# 打印状态码

# print(response.get_code())

print(response.status)

# 获取响应头

print(response.getheaders())

# 获取响应头Server信息

print(response.getheader('Server'))

# 获取响应结果原因

print(response.reason)

POST 请求方式

# 导入urllib库

import urllib.parse

import urllib.request

# 向指定的url发送请求,并返回

post_url = 'https://fanyi.baidu.com/sug'

# 传入参数

form_data = {

'kw': 'honey'

}

# 格式化参数

form_data = urllib.parse.urlencode(form_data).encode()

response = urllib.request.urlopen(url=post_url, data=form_data)

# 打印服务器响应的类文件对象

print(type(response))

# 类文件对象支持文件对象的操作方法,如read()方法读取文件全部内容,返回字符串

html = response.read()

# 打印响应结果(byte类型)

print(html)

# 打印响应结果(utf-8类型)

print(html.decode())

# 打印状态码

print(response.status)

# print(response.getcode())

# 获取响应头

print(response.getheaders())

# 获取响应头Server信息

print(response.getheader('Server'))

# 获取响应结果原因

print(response.reason)

urlretrleve()

1.参数说明

url : 下载链接地址;

filename : 指定保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鼬电脑壁纸_火影忍者高清壁纸需要自取1080p

更新了,火影忍者高清壁纸。(图片源于网络,侵权必删)别忘,关注、点赞、收藏哦。需要原图评论点赞,我给你喔。传送门;可爱的橙猪猪:鬼刀高清壁纸,电脑1080p,无水印。​zhuanlan.zhihu.…

二元置信椭圆r语言_r语言二元期权barrier option实现案例

原文链接:http://tecdat.cn/?p4051​tecdat.cnDouble-no-touch(DNT)选项是二元期权,在到期时支付固定金额的现金。我们将展示两种不同的方式来定价包含两种不同定价方法的DNT。​​​首先,我们将尝试使用正常参数&…

win7可以运行的mysql,win7下mysql安装

1、下载mysqlhttps://dev.mysql.com/downloads/mysql/2、解压完成后,在根目录创建my.ini文件,其中内容如下:[mysql]# 设置mysql客户端默认字符集default-character-setutf8[mysqld]#设置3306端口port 3306# 设置mysql的安装目录basedirD:\Pr…

python用turtle画小人-画一个心送给心爱的小姐姐,Python绘图库Turtle

import turtle turtle.setup(1200, 600) #窗口大小 #画心 turtle.color("black", "red") turtle.pensize(2) turtle.speed(10) turtle.up() #提起画笔 turtle.goto(0, 50) turtle.down() def draw_heart(r, angle45): """ :param r:桃心圆的…

vscode emmet默认模板_从零开始配置 vscode

我们在进行开发工作时,选择一个顺手好用的编辑器是必不可免的, 其中 vscode 就是一个很好的选择。它能让你大部分的工作都在编辑器内完成, 大大的提高开发效率~概述vscode 内置了前端相关的基础环境,如emmet扩展。另外的环境则可以通过它自己的插件商城来…

djano 字段不重复_Java 14 发布了,不使用quot;classquot;也能定义类了?还顺手要干掉Lombok!...

2020年3月17日发布,Java正式发布了JDK 14 ,目前已经可以开放下载。在JDK 14中,共有16个新特性,本文主要来介绍其中的一个特性:JEP 359: Records官方吐槽最为致命早在2019年2月份,Java 语言架构师 Brian Goe…

oracle 10g 还原表格,oracle 10g 闪回表恢复

oracle 从10g开始增加了闪回功能。9i 用drop命令删除表之后很难恢复,10g drop之后并未真正删除,而是放入了闪回区域,如果是误操作,可以马上从闪回区域恢复误删除的的表。今天使用了一下该功能,还是很方便的。下面模拟在…

oracle数据库函数手册,Oracle分析函数参考手册(转)

22/06/2005 12:22 FPOracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。下面例子中使用的表来自Oracle自带的HR用户下的表,如果没…

java队列_java集合入门和深入学习(详解),看这篇就差不多了

一、集合入门总结集合框架:Java中的集合框架大类可分为Collection和Map;两者的区别:1、Collection是单列集合;Map是双列集合2、Collection中只有Set系列要求元素唯一;Map中键需要唯一,值可以重复3、Collect…

oracle课程小结,Oracle 数据库优化实战心得总结

一般情况下,对于频繁访问但是不频繁修改的数据,内部设计应当物理不规范化;对于频繁修改但并不频繁访问的数据,内部设计应当物理规范化。3.充分利用内存,优化sga、pga等(11g已经实现了sgapga自动化,但有的时…

苹果公司的企业文化_百度、苹果、脉脉等互联网大厂的企业文化衫还能这么潮?...

转眼2020年就已经到年中啦,很多企业已经敲锣打鼓,筹备着年中的会议团建了,有趣的,好玩的,有创意的,体面的,大场面的,国际范儿的,到底怎么样的年中策划才是最NICE的呢&…

命名空间跟作用域是什么关系_魏如萱许光汉首次合唱新歌《什么跟什么有什么关系》_娱乐频道...

近日,许光汉与新晋金曲奖歌后魏如萱合作的最新单曲《什么跟什么有什么关系》已经上线。歌曲由金曲奖最佳作词人李焯雄作词,魏如萱作曲,陈建骐担当制作,魏如萱和许光汉共同演唱。单曲收录于十一音乐的年度限定合作企划“不完美人生…

oracle 本年1月1号 yy,ORACLE 日期函数

一、 常用日期数据格式1.Y或YY或YYY 年的最后一位,两位或三位SQL> Select to_char(sysdate,Y) from dual;TO_CHAR(SYSDATE,Y)--------------------7SQL> Select to_char(sysdate,YY) from dual;TO_CHAR(SYSDATE,YY)---------------------07SQL> Select to_…

二级域名是否可以随意设定_新老域名是否影响SEO优化收录排名?企业需要多域名做网站吗?...

(文/守护袁昆)各互联网平台想免费做营销推广变得比较困难,而大多数中小企业又没什么资金方面的营销预算,所以付费推广广告也没法做。建立自己的企业官网貌似是不错的方式。传统企业在互联网上玩了一圈,发现还是自己的企业官网最靠谱。那么问题…

oracle pr,PRMSCAN ORACLE碎片扫描合并工具

prmscan 是诗檀软件独立研发的ORACLE数据块碎片扫描合并工具,其适用于以下的场景:误手动删除了文件系统(任意文件系统 NTFS、FAT、EXT、UFS、JFS等)或ASM上的数据文件文件系统损坏,导致数据文件大小变成0 bytes即数据文件被清零文件系统损坏&…

win10启动修复_以安全模式启动win10的4种方法,简单高效,修复电脑故障必用技巧...

在安全模式下启动Windows7只是小菜一碟,你所要做的就是按下Shift8来中断启动过程,然而,在安全模式下启动windows 10的过程并不是那么简单。一些用户甚至认为Windows 10无法使用安全模式,但事实并非如此,有很多方法可以…

oracle12178错误,Oracle学习笔记_20080522:Index FS vs Index FFS

Index Full Scan vs Index Fast Full Scanindex full scan和index fast fullscan是指同样的东西吗?答案是no。两者虽然从字面上看起来差不多,但是实现的机制完全不同。我们一起来看看两者的区别在哪里?首先来看一下IFS,FFS能用在哪里:在一句…

usb接口供电不足_Win7系统下电脑USB供电不足的解决方法

关注奕奇科技,学习更多小妙招,工作效率加倍小妙招,值得收藏笔记本主板USB供电不足的现象可以解释成两种情况:第一种是笔记本使用电池的时候会自动切换到较低的功耗,最大的电流标准是500mA,电压是5V&#xf…

php memcached 队列,redis获取所有队列_memcached

scrapy-redis实现分布式中, 获取redis队列中的612x230 - 24KB - PNGscrapy动态的从redis队列中获取源,并启动spid558x462 - 128KB - PNGRedis实现消息队列700x365 - 36KB - JPEGRedis实现简单消息队列 - 滚动_【北京联盟】677x441 - 9KB - PNGRedis实现简单消息队列 - 滚动_【北…

BP算法和RNN_模型CNN-RNN-LSTM和GRU简介

深度学习自从2006年以后已经“火”了十多年了,目前大家看到的,最普遍的应用成果是在计算机视觉、语音识别和自然语言处理(NLP)。最近工业界也在努力地扩展它的应用场景,比如游戏、内容推荐和广告匹配等等。深度模型架构…