python3 爬虫 urllib

Python3网络爬虫(一):利用urllib进行简单的网页抓取 运行平台:Windows Python版本:Python3.x IDE:Sublime text3 最近开始整理python的资料,博主建立了一个qq群,希望给大家提供一个交流的同平台 78486745 。 一、预备知识 1.Python3.x基础知识学习: 2.开发环境搭建: 二、网络爬虫的定义 网络爬虫,也叫网络蜘蛛(Web Spider),如果把互联网比喻成一个蜘蛛网,Spider... 阅读详情

打开网页

  • urllib.request.urlopen(url)
import urllib.request
# 打开网页,返回 HTTP Response 对象
response = urllib.request.urlopen('http://www.baidu.com')
# 状态码
print(response.getcode())
# 获取当前所爬取的URL地址
print(response.geturl())
# 响应头
print(response.getheaders())
# 读取数据(二进制模式)
print(response.read())

浏览器伪装

import urllib.request
url = 'http://www.baidu.com'
header = {
   'User-Agent':
       'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36'
}  # 浏览器伪装
# 创建request对象
request = urllib.request.Request(url, headers=header)
# 传入request对象,打开网页,返回response对象
response = urllib.request.urlopen(request)
# 读数据
text = response.read().decode('utf-8')

URL编码和解码

from urllib import parse
编码:urlencode(传入字典)
编码:quote(传入字符串)
解码:unquote
from urllib import parse
keyword = 'Python爬虫'
# urlencode
dic = {"wd": keyword, 'q': 120}
wd = parse.urlencode(dic)
print(wd)
# quote
quote = parse.quote(keyword)
print(quote)
# 解码
unquote = parse.unquote(quote)
print(unquote)

打印结果

wd=Python%E7%88%AC%E8%99%AB&q=120
Python%E7%88%AC%E8%99%AB
Python爬虫

编码实例:构造淘宝URL

from urllib import parse
# 搜索词
keyword = 'python人工智能'
# 原淘宝url
original_url = 'https://s.taobao.com/search?'
for i in range(9):
    # 页码+搜索词
    page = i * 44
    kw = parse.urlencode({"s": page, "q": keyword})
    url = original_url + kw
    print(url)

打印结果

https://s.taobao.com/search?s=0&q=python%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD
https://s.taobao.com/search?s=44&q=python%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD
https://s.taobao.com/search?s=88&q=python%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD
https://s.taobao.com/search?s=132&q=python%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD
https://s.taobao.com/search?s=176&q=python%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD
https://s.taobao.com/search?s=220&q=python%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD
https://s.taobao.com/search?s=264&q=python%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD
https://s.taobao.com/search?s=308&q=python%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD
https://s.taobao.com/search?s=352&q=python%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD

URL拆分

from urllib.parse import urlsplit, urljoin
url1 = 'https://blog.youkuaiyun.com/Yellow_python'
url2 = '/Yellow_python/article/details/80801731'
# 拆分URL
urls = urlsplit(url1)
print(urls)
# 获取域名
domain = urls[0] + '://' + urls[1]
print(domain)
# 连接URL
url12 = urljoin(domain, url2)
print(url12)

打印结果

SplitResult(scheme='https', netloc='blog.youkuaiyun.com', path='/Yellow_python', query='', fragment='')
https://blog.youkuaiyun.com

URL拼接

urlsplit、urljoin

from urllib.parse import urlsplit, urljoin

print('\033[035m{}\033[0m\n'.format(urlsplit('https://www.baidu.com/s?ie=UTF-8&wd=scrapy')))

def join_url(url, postfix, real):
    tu = urlsplit(url)
    domain = tu[0] + '://' + tu[1]
    url_total = urljoin(domain, postfix)
    for i in ['url', 'domain', 'url_total', 'real', 'url_total==real']:
        print('\033[033m%-15s\033[0m' % i, eval(i))
    print()

ls = [
    ('https://blog.youkuaiyun.com/Yellow_python',
     'https://blog.youkuaiyun.com/Yellow_python/article/details/94435972',
     'https://blog.youkuaiyun.com/Yellow_python/article/details/94435972'),
    ('https://k.autohome.com.cn/314/#pvareaid=2099126',
     '/spec/36144/',
     'https://k.autohome.com.cn/spec/36144/'),
]
for url, postfix, real in ls:
    join_url(url, postfix, real)

函数(复制用)

from urllib.parse import urlsplit, urljoin

def join_url(url, postfix):
    tu = urlsplit(url)
    domain = tu[0] + '://' + tu[1]
    return urljoin(domain, postfix)

url = 'https://github.com/AryeYellow'
postfix = '/AryeYellow/NLP'
url_total = join_url(url, postfix)
print(url_total)
print
https://github.com/AryeYellow/NLP

parse

from urllib import parse
keyword = 'Python爬虫'
# url编码
dic = {"wd": keyword, 'q': 120}
wd = parse.urlencode(dic)
print(wd)
# quote(引述;报价;引文;引号;)
quote = parse.quote(keyword)
print(quote)
# url解码
unquote = parse.unquote(quote)
print(unquote)
print
wd=Python%E7%88%AC%E8%99%AB&q=120
Python%E7%88%AC%E8%99%AB
Python爬虫

函数(复制用)

from urllib import parse

def encode_url(url, dt):
    wd = parse.urlencode(dt)
    return url + wd

url = 'https://www.baidu.com/s?'
keyword = 'Python爬虫'
dt = {'ie': 'UTF-8', 'wd': 'K房'}
print(encode_url(url, dt))  # https://www.baidu.com/s?ie=UTF-8&wd=K%E6%88%BF

Handler

代理IP

  • urllib.request.ProxyHandler
import urllib.request
ua = 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'
url = 'http://httpbin.org/get'
# 代理Handler
proxy_handler = urllib.request.ProxyHandler()
opener = urllib.request.build_opener(proxy_handler)
response = opener.open(url)
print(response.read())

Cookie

  • 保存cookie
import http.cookiejar, urllib.request
file_name = 'cookie.txt'
cookie = http.cookiejar.LWPCookieJar(file_name)
handler = urllib.request.HTTPCookieProcessor(cookie)  # 创建cookie处理器
opener = urllib.request.build_opener(handler)
urllib.request.install_opener(opener)  # 将opener安装为全局
response = opener.open('http://www.baidu.com')  # 打开网页
cookie.save(ignore_discard=True, ignore_expires=True)
  • 读取cookie
import http.cookiejar, urllib.request
file_name = 'cookie.txt'
cookie = http.cookiejar.LWPCookieJar()
cookie.load(file_name, ignore_discard=True, ignore_expires=True)  # 读文件
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler)
urllib.request.install_opener(opener)
response = opener.open('http://www.baidu.com')
print(response.read().decode())

异常

from urllib import request,error
try:
    response = request.urlopen('http://cuiqingcai.com/index.htm')
except error.HTTPError as e:
    print('--------------------- e')
    print(e)
    print('--------------------- e.reason')
    print(e.reason)
    print('--------------------- e.code')
    print(e.code)
    print('--------------------- e.headers')
    print(e.headers)

打印结果

--------------------- e
HTTP Error 404: Not Found
--------------------- e.reason
Not Found
--------------------- e.code
404
--------------------- e.headers
Server: nginx/1.10.3 (Ubuntu)
Date: Mon, 30 Jul 2018 10:14:42 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Vary: Cookie
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Link: <https://cuiqingcai.com/wp-json/>; rel="https://api.w.org/"
python爬虫-urllib,urllib3库的使用 理解虚拟机的使用 由于服务器的开发往往是基于linux系统的,例如Ubuntu,Centos等等,所以如果我们是windows操作系统的个人电脑,利用虚拟机来进行相关后端的学习是非常有好处的,这里只陈述在开发时物理机和虚拟机的python文件的逻辑关系。 本地windows物理机需要有python解释器,pycharm; pycharm是对本地文件进行编辑的; 虚拟Ubuntu机需要有python... 阅读详情

相关推荐

Python3网络爬虫实战---20、使用Urllib:发送请求

学习爬虫,最初的操作便是来模拟浏览器向服务器发出一个请求,那么我们需要从哪个地方做起呢?请求需要我们自己来构造吗?我们需要关心请求这个数据结构的实现吗?我们需要了解 HTTP、TCP、IP 层的网络传输通信吗?我们需要知道服务器的响应和应答原理吗? 可能你不知道无从下手,不用担心,Python 的强大之处就是提供了功能齐全的类库来帮助我们完成这些请求,最基础的 HTTP 库有 Urllib、Ht...

691

基于python从redmine-api中获取项目缺陷数据(1)

1.引言 本文主要内容是将如何利用 Python 对 Redmine缺陷进行缺陷数据获取操作。目前统计缺陷数据时基本是根据项目手动去redmine获取缺陷数据,至少要花费一个工作日去完成,目前的目标是通过python脚本通过 Redmine-API快速去获取各个维度的缺陷数据 需求: 需要输出 产品质量数据(总BUG数,每日新建bug...

weixin_33978044的博客 2243

【Python】Python3网络爬虫实战-20、使用Urllib:发送请求

学习爬虫,最初的操作便是来模拟浏览器向服务器发出一个请求,那么我们需要从哪个地方做起呢?请求需要我们自己来构造吗?我们需要关心请求这个数据结构的实现吗?我们需要了解 HTTP、TCP、IP 层的网络传输通信吗?我们需要知道服务器的响应和应答原理吗? 可能你不知道无从下手,不用担心,Python 的强大之处就是提供了功能齐全的类库来帮助我们完成这些请求,最基础的 HTTP 库有 Urllib、Htt...

Python8年程序员教程分享 771

python爬虫数据导入_如何整理python爬虫爬出的数据?

这个看情况吧,保存到excel、mysql都行,如果数据量少的话,可以存到excel中,如果数据量多的话,可以存到mysql数据库中,下面我大概介绍一下如何将爬取到的数据存储到excel和mysql数据库中,实验环境win7+python3.6+pycharm5.0,主要步骤如下:1.为了方便演示,这里以爬取人人贷上面的债券数据为例,如下,主要爬取年利率、借款标题、期限、金额、进度这5个字段信息:...

weixin_39568889的博客 638

Python网络爬虫技术栈:urllib库与urllib3库

其中,urllib库和urllib3库是Python中常用的网络请求库,它们提供了丰富的功能和灵活性,使得开发者能够轻松地发送HTTP请求、处理响应和管理网络连接。在上述示例中,我们使用quote()函数将URL中的中文字符"网络爬虫"进行编码,得到的结果是"%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB",该编码结果可以用于构建具有中文参数的URL。最后,我们读取响应内容并打印出来。在本篇文章中,我们将深入探讨urllib库和urllib3库的使用方法,并提供相应的源代码示例。

2301_79366435的博客 375

『n8n』初识界面

在首页(Overview),我们和 n8n 最常打交道的是“Workflows”、“Credentials”、“Executions”这几个面板(其实后面2个也会用到,但初学阶段可以先不管)。Workflows 面板可以看到我们创建的所有工作流,所以要给工作流起一个一眼看上去就知道是干嘛的名字。

weixin_39415598的博客 1461

URL编码/解码详解

URL编码/解码详解 当 URL 路径或者查询参数中,带有中文或者特殊字符的时候,就需要对 URL 进行编码(采用十六进制编码格式)。URL 编码的原则是使用安全字符去表示那些不安全的字符。 安全字符,指的是没有特殊用途或者特殊意义的字符。 URL基本组成 URL 是由一些简单的组件构成,比如协议、域名、端口号、路径和查询字符串等,示例如下: http://www.ccc.net/index?param=10 路径和查询字符串之间使用问号?隔开。上述示例的域名为 www.ccc.net,路径为 index

ccc369639963的博客 2万+

OpenClaw + Ollama 本地大模型部署教程:彻底告别Token焦虑

OpenClaw + Ollama 本地大模型部署教程:彻底告别Token焦虑

leaning_java的博客 1230

python爬虫之urllib库详解

python爬虫之urllib库详解 urllib库用于操作网页 URL,并对网页的内容进行抓取处理 urllib 包 包含以下几个模块: urllib.request - 打开和读取 URL。 urllib.error - 包含 urllib.request 抛出的异常。 urllib.parse - 解析 URL。 urllib.robotparser - 解析 robots.txt 文件 python爬虫主要用到的urllib库中的request和error模块 下面我们来详细说明一下这两

Y_peak的博客 7153

基因家族扩张收缩分析可视化(CAFE5)

CafePlotter 是一个用于可视化 CAFE5 基因家族扩张收缩分析结果的 Python 工具

xuzhougeng blog 3645

别再手搓SVG了!用Vue3+SVG.js快速搭建电力系统拓扑图(附完整代码)

本文介绍了如何利用Vue3和SVG.js实现电力系统拓扑图的低代码开发,通过组件化和响应式数据绑定,大幅提升开发效率。文章详细解析了SVG.js的核心功能,包括图形创建链式API、动态属性绑定和高级图形操作,并提供了断路器组件的完整实现代码。此外,还分享了性能优化策略和调试技巧,帮助开发者应对大规模拓扑图的挑战。

weixin_27717759的博客 354

【愚公系列】《Python网络爬虫从入门到精通》004-请求模块urllib3

在现代编程中,网络请求是一个不可或缺的环节,无论是数据抓取、API调用还是后端服务的交互,都会涉及到网络通讯。而在众多网络请求库中,urllib3因其强大的功能和易用性,成为了许多开发者的首选。它不仅提供了对HTTP协议的全面支持,还具备连接池、重试机制和SSL/TLS验证等多种实用特性。在本文中,我们将深入探讨urllib3模块的基本用法,帮助你更好地理解如何利用这个库进行高效的网络请求。不论你是初学者还是有经验的开发者,掌握urllib3都将为你的项目带来极大的便利。

愚公智库 12万+

高通 Wi-Fi 驱动实录:MHI 协议中 Host 私有的数据结构

它那 16 字节的身体里,不仅装下了硬件返回的完成码(code)、传输长度(len),还装下了通道号(chid)和回指指针(ptr)。硬中断响应(mhi_irq_handler):需要特别注意的是,er_ctxt.msivec 和 mhi_event.irq 存储的是 MSI 向量索引(如 0, 1, 2...),而不是真正的 Linux IRQ 号!在它的内部,整段内嵌了两个 struct mhi_ring 实例:一个是处理硬件交互的 tre_ring,另一个则是默默在幕后记账的 buf_ring。

1042484520@qq.com(邮箱) 75

Python网络爬虫 urllib3 入门这篇就够了

urllib3是一个功能强大且易于使用的Python HTTP库,主要用于发送HTTP请求和处理HTTP响应。它是urllib和urllib2的后续版本,设计用于支持HTTP 1.1标准,并提供了许多高级功能和选项,使得在Python中进行HTTP通信变得更加简单和灵活。urllib3的主要功能和特点包括:支持HTTP和HTTPS协议:urllib3支持HTTP和HTTPS协议的请求,可以方便地发送GET、POST、PUT、DELETE等各种类型的请求。

制定持续可量化的目标,不断坚持。 2022

Vue - 列表拖曳排序 / 鼠标拖动改变顺序排列高效简洁组件(支持PC端与移动端触屏拖动,也可在滚动条内排序自动滚动,流畅丝滑无 BUG)

Vue-高效简洁列表拖曳排序/鼠标拖动改变顺序排列组件支持PC端与移动端触屏拖动,也可在滚动条内排序自动滚动,流畅丝滑无BUG列表拖曳排序插件vuedraggable拉动拽动拖动顺序改变排序js,vue.js,nuxt.js列表如何实现鼠标拖曳改变顺序排列支持滚动条内复杂数据对象带拖动效果动画排序完毕自动排列数组位置克隆Vue.Draggable官方文档教程SortableJS与vuedraggable列表拖动排序Vue拖拽组件库vuedraggable的安装与使用用户用鼠标拖动排序功能源码最好

🏆 前端领域优质创作者 4849

详细解释xilinx源语的使用:IDELAYE2和IDELAYE3

/ 完整的数据位对齐模块input wire dqs, // 数据选通input wire [7:0] dq_in, // 8位数据输入output wire [63:0] data_out // 并行数据输出// 延迟控制信号// 每个数据位都需要独立的IDELAYgenvar i;i < 8;// IDELAYE2实例.IDELAY_VALUE (10), // 初始值。

baidu_34971492的博客 441

python爬虫设计模式_Python3网络爬虫(一):利用urllib进行简单的网页抓取

点击蓝色字免费订阅,每天收到这样的好信息 前言:最近有不少粉丝关注本公众号。并且我已经成功开通了流量主同时会赚一点点广告费,我打算每个月把这部分钱拿出来给大家买点书刊,算是给大家一点福利吧。大家想买什么书扫描下方的加他拉你加群。最后,非常感谢大家的关注。 运行平台:WindowsPython版本:Python3.xIDE:Sublime text3转载请注明作者和出处:http://blog....

weixin_39765697的博客 140

基于Cesium移动的天空云

天空中的云朵也算是一种天气气候的效果,它能更加逼真的反映当前的天气状况,可以是白云朵朵,也可以是乌云密布,结合其他天气效果,可以组合形成较为真实的三维可视化场景。

星云数海的博客,一个专注GIS十多年的GISer人。 449

python3 爬虫_Python3网络爬虫(一):利用urllib进行简单的网页抓取

点击蓝色字免费订阅,每天收到这样的好信息前言:最近有不少粉丝关注本公众号。并且我已经成功开通了流量主同时会赚一点点广告费,我打算每个月把这部分钱拿出来给大家买点书刊,算是给大家一点福利吧。大家想买什么书扫描下方的加他拉你加群。最后,非常感谢大家的关注。运行平台:WindowsPython版本:Python3.xIDE:Sublime text3转载请注明作者和出处:http://blog...

weixin_39819138的博客 284

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python3网络爬虫:urllib.error异常

Python3网络爬虫:urllib.error异常一.urllib.errorurllib.error可以接收有urllib.request产生的异常。urllib.error有两个方法,URLError和HTTPError。如下图所示:URLError是OSError的一个子类,HTTPError是URLError的一个子类,服务器上HTTP的响应会返回一个状态码,根据这个HT...

Bruce小鬼 2175

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

python3网络爬虫一《使用urllib.request发送请求》

python 爱好者交流群:810306356 这里有很多像你一样的伙伴,共同分享学习python的经验! 使用urllib 在Python2版本中,有urllib和urlib2两个库可以用来实现request的发送。而在Python3中,已经不存在urllib2这个库了,统一为urllib。Python3 urllib库官方链接 https://docs.pytho...

软件测试技术的博客 7万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

centos7 python3 爬虫登陆邮箱_Python3网络爬虫(一):利用urllib进行简单的网页抓取...

点击蓝色字免费订阅,每天收到这样的好信息 前言:最近有不少粉丝关注本公众号。并且我已经成功开通了流量主同时会赚一点点广告费,我打算每个月把这部分钱拿出来给大家买点书刊,算是给大家一点福利吧。大家想买什么书扫描下方的加他拉你加群。最后,非常感谢大家的关注。 运行平台:WindowsPython版本:Python3.xIDE:Sublime text3转载请注明作者和出处:http://blog....

weixin_36374366的博客 251

【Python】Python3网络爬虫实战-22、使用Urllib:解析链接

Urllib 库里还提供了 parse 这个模块,它定义了处理 URL 的标准接口,例如实现 URL 各部分的抽取,合并以及链接转换。它支持如下协议的 URL 处理:file、ftp、gopher、hdl、http、https、imap、mailto、 mms、news、nntp、prospero、rsync、rtsp、rtspu、sftp、shttp、 sip、sips、snews、svn、sv...

Python8年程序员教程分享 537
上一篇: Python 任意字典生成 SQL(insert 语句)
下一篇: python3-爬虫【requests】模块
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值