当前位置: 首页 > news >正文

做网站公司关键词化外浙江嘉兴seo网站优化推广

做网站公司关键词化外,浙江嘉兴seo网站优化推广,制作收款网站,南宁网站建设加q.479185700大数据时代#xff0c;各行各业对数据采集的需求日益增多#xff0c;网络爬虫的运用也更为广泛#xff0c;越来越多的人开始学习网络爬虫这项技术#xff0c;K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章#xff0c;为实现从易到难全方位覆盖#xff0c;特设【0基础学… 大数据时代各行各业对数据采集的需求日益增多网络爬虫的运用也更为广泛越来越多的人开始学习网络爬虫这项技术K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章为实现从易到难全方位覆盖特设【0基础学爬虫】专栏帮助小白快速入门爬虫本期为网络请求库的使用。 网络请求库概述 作为一名爬虫初学者熟练使用各种网络请求库是一项必备的技能。利用这些网络请求库我们可以通过非常简单的操作来进行各种协议的模拟请求。我们不需要深入底层去关注如何建立通信与数据如何传输只需要调用各种网络请求库封装好的方法。Python提供了很多功能强大的网络请求库如urllib、requests、httpx、aiohttp、websocket等下文中会对这些库做一一介绍。 urllib 安装与介绍 安装 urllib是Python的内置请求库不需要再额外安装。 介绍 urllib库包含四个模块 urllib.request向目标url发起请求并读取响应信息。 urllib.error负责异常处理捕获urllib.request抛出的异常。 urllib.parse解析url提供了一些url的解析方法。 urllib.robotparser解析网站robots.txt文件判断网站是否允许爬虫程序进行采集。 使用方法 请求与响应 使用到了urllib.request模块中的urlopen方法来打开一个url并获取响应信息。urlopen默认返回的是一个HTTPResponse对象可以通过read方法得到它的明文信息。 import urllib.requestresponse urllib.request.urlopen(http://httpbin.org/get)print(response) #打印http.client.HTTPResponse object at 0x0000013D85AE6548 print(response.read().decode(utf-8)) #响应信息 print(response.status) #返回状态码 print(response.getheaders()) #返回响应头信息设置请求头与参数 当请求需要设置请求头时就需要用到urllib.request模块中的另一个方法Request它允许传递如下几个参数 def __init__(self, url, dataNone, headers{},origin_req_hostNone, unverifiableFalse,methodNone)url目标url data请求参数默认为None headers请求头信息字典类型 origin_req_host请求的主机地址 unverifiable设置网页是否需要验证 method请求方式 from urllib import request,parseurl https://httpbin.org/post #目标URL headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 } #请求头信息 params {test:test01 #请求参数 }data bytes(parse.urlencode(params),encodingutf-8) #解析为bytes类型 res request.Request(url,datadata,headersheaders,methodPOST) #实例化Request response request.urlopen(res) #发起请求print(response.read().decode(utf-8)) #响应信息异常捕获 在发起请求时可能会因为网络、url错误、参数错误等问题导致请求异常程序报错。为了应对这种情况我们需要添加异常处理功能。 from urllib import request,errortry:response request.urlopen(http://httpbin.org/get) except error.HTTPError as e: #捕获异常print(e) #打印异常信息requests requests是Python爬虫开发中最常使用到的库它提供了简单易用的API使得在Python中发送HTTP请求变得非常容易它比urllib模块更加简洁使用更加方便。 安装与介绍 安装 requests是Python的第三方库使用 pip install requests进行安装 介绍 requests包含了许多模块这里只介绍主要模块 requests主模块提供了HTTP请求方法。 requests.session会话模块提供了Session类用于多个请求中共享请求信息。 requests.adapters适配器模块提供了不同协议的适配器类用于处理不同协议的请求。 requests.cookieCookie模块用于处理cookie信息。 requests.exceptions异常处理模块用于处理请求中会出现的各种异常。 requests.status_codes状态码模块提供了HTTP状态码常量和状态码解释。 使用方法 请求与响应 import requests #导入requests模块get_response requests.get(http://httpbin.org/get) #发送get请求 post_response requests.post(http://httpbin.org/post) #发送post请求print(get_response) #Response [200] print(post_response) #Response [200]requests库发送请求非常简单并支持多种请求方式如get、post、put、delete等。发起请求后requests会返回一个Response对象可以使用多种方法来解析Response对象。 import requestsresponse requests.get(http://httpbin.org/get)print(response.status_code) #返回响应状态码 print(response.encoding) #返回响应信息的编码 print(response.text) #返回响应的文本信息 print(response.content) #返回响应的字节信息 print(response.json()) #将JSON响应信息解析为字典如果响应数据类型不为JSON则会报错 print(response.headers) #返回响应头信息 print(response.cookies) #返回响应cookie设置请求头与参数 request(self,method,url,paramsNone,dataNone,headersNone,cookiesNone,filesNone,authNone,timeoutNone,allow_redirectsTrue,proxiesNone,hooksNone,streamNone,verifyNone,certNone,jsonNone)requests中设置请求头可以通过headers参数来设置headers是一个字典类型键为请求头的字段名值为对应请求头的值。 请求参数可以通过params方法进行设置类型为字典。键为参数名值为对应参数的值。 在网络请求中携带的参数可以分为两个类型它们在python中对应的字段名如下 查询字符串参数params 请求载荷data/json 查询字符串参数params是拼接在url中的参数常用于get请求作为查询参数使用。而data与json一般使用与post请求中它是要发送到服务器的实际数据。 import requestsheaders {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 }params {key:value} data {username:user,passowrd:password}get_response requests.get(url,paramsparams,headersheaders) post_response requests.post(url,datadata,headersheaders)Session的使用 当一个网站我们需要多次请求时如我需要登录 - 请求个人页面在面对这种场景时我们可以使用到Session方法。因为通过requests发送到的请求是独立我们请求登录接口与请求个人页面之间是没有联系的我们需要请求登录接口后获取它返回的cookie然后设置cookie进行下一次请求。每次请求后都需要设置一次cookie如果请求流程更多的话那么过程就会显得很繁琐。使用Session方法就能更好的模拟一次请求流程不需要频繁的设置cookie。 Session的作用类似于浏览器中的cookie与缓存它可以用于在多次请求中维护一些状态信息避免重复发送相同的信息和数据使用Session可以优化HTTP请求的性能与可维护性它的使用也非常简单。 import requestssession requests.Session() #创建session对象 session.get(http://httpbin.org/cookies/set/username/test) #发起请求模拟一次登录 response session.get(http://httpbin.org/cookies) #获取cookieprint(response.text) #{cookies: {username: test}}异常捕获 requests.exceptions 中提供了一系列请求异常。 ConnectTimeout连接超时 ReadTimeout服务器在指定时间内没有应答 ConnectionError未知的服务器 ProxyError代理异常 URLRequired无效URL TooManyRedirects重定向过多 MissingSchemaURL缺失如缺少http/https InvalidSchema提供的URL方案无效或不受支持 InvalidURL提供的URL不知何故无效 InvalidHeader提供的请求头无效 InvalidProxyURL提供的代理URL无效 ChunkedEncodingError服务器声明了编码分块但发送了无效分块 ContentDecodingError无法对响应信息解码 StreamConsumedError此响应内容已被使用 RetryError自定义重试逻辑错误 UnrewindableBodyError请求在尝试倒带正文时遇到错误 HTTPError出现HTTP错误 SSLError发生SSL错误 Timeout请求超时 httpx 前面讲到了requests库它功能强大、使用简单并且提供session会话模块似乎requests库已经可以满足所有的应用场景了。但是requests也有一些致命的缺点 同步请求不支持异步requests默认使用同步请求在网络请求中同步请求到导致性能问题。 不支持HTTP2.0如今已经有少部分网站采用HTTP2.0协议来进行数据传输面对这类网站无法使用requests。 而httpx是一个基于异步IO的Python3的全功能HTTP客户端库旨在提供一个快速、简单、现代化的HTTP客户端它提供同步与异步API而且支持HTTP1.1和HTTP2.0。并且httpx功能也很齐全requests支持的功能httpx也基本同样支持。因此在爬虫开发中使用httpx也是一个非常不错的选择。 安装与介绍 安装 httpx是Python的第三方库使用 pip install httpx进行安装 如果需要httpx支持https2.0则需要安装它的可选依赖项 pip install httpx[http2] 介绍 httpx是建立在requests的成熟可用性之上的提供的模块与requests大同小异因此不做介绍。 使用方法 httpx用法与requests基本一致这里主要介绍httpx的Client实例。 httpx Client Client作用与requests的session方法一致但用法有些区别。 常见用法是使用上下文管理器这样可以确保在请求完成后能够正确清理连接。 import httpxwith httpx.Client() as client:response client.get(https://httpbin.org/get)print(response) #Response [200 OK]在设置请求头、传递参数时也有新的写法。 import httpxheaders {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36} params {key:value}with httpx.Client(headersheaders,paramsparams) as client:response client.get(https://httpbin.org/get)print(response)aiohttp aiohttp是基于Python异步IO的HTTP客户端/服务器库它与httpx相似同样支持HTTP1.1和HTTP2.0协议aiohttp是基于asyncio实现的它支持WebSocket协议。 安装 aiohttp是Python的第三方库使用 pip install aiohttp进行安装 使用 import aiohttp import asyncioasync def main():async with aiohttp.ClientSession() as session:async with session.get(https://httpbin.org/get) as response:print(response) #ClientResponse(https://httpbin.org/get) [200 OK]loop asyncio.get_event_loop() loop.run_until_complete(main())aiohttp不支持同步需要与asyncio一起使用与前文中讲到的库对比aiohttp显得异常复杂requests两行代码就能完成的功能aiohttp却需要5行。为什么aiohttp代码如此冗余我们却要使用它呢因为aiohttp是异步的它的api旨在充分利用非阻塞网络操作在实例代码中请求将阻塞三次这为事件循环提供了三次切换上下文的机会。aiohttp可以实现单线程并发IO操作它在处理大量网站请求时的速度远超于requests但在涉及到文件读写操作时它发挥的作用就没有预期的那么大因此aiohttp库的使用需要爬虫开发者自行斟酌。 websocket Python websocket库是专门用于创建WebSocket服务的库。WebSocket是一种在客户端与服务端之间进行双向通信的协议服务端可以向客户端推送数据客户端也可以向服务端推送数据这样就能实现数据的及时通信它与HTTP协议一样由socket实现。WebSocket通常使用在直播、弹幕等场景中。 安装 websocket是Python的内置库不需要手动安装。当你在运行下文中的实例时如果报错cannot import name WebSocketApp from websocket你可以卸载现有的websocket库安装websocket-client0.53.0版本的包。 使用 websocket用于客户端与服务端通信爬虫开发中一般只会进行客户端的开发所有这里只介绍客户端的开发。 使用WebSocketApp可以快速的建立一个Websocket连接。 from websocket import WebSocketAppdef on_message(ws, message): #接收到消息时执行print(message) def on_error(ws, error): #异常时执行print(error) def on_close(ws): #关闭连接时执行print(WebSocket closed) def on_open(ws): #开启连接时执行ws.send(Hello, WebSocket!) #发送信息if __name__ __main__:ws WebSocketApp(ws://echo.websocket.org/,on_messageon_message,on_erroron_error,on_closeon_close)ws.on_open on_openws.run_forever()可以看到websocket提供了四个模块 on_message接收服务器推送来的数据 on_error连接异常时会触发on_error on_close连接关闭时触发on_close on_open连接开启时触发on_open 归纳 上文中讲到了urllib、requests、httpx、aiohttp、websocket这五个库的使用这五个库基本能够满足爬虫开发中的请求需求。urllib是python的内置库使用起来较为繁琐可以只做了解。requests是爬虫开发中最常使用的库功能齐全使用简单需要认真学习。httpx在requests的基础上支持异步处理、HTTP2.0与Websocket协议requests的功能httpx都支持但在性能方面httpx弱于其他请求库httpx也需要爬虫初学者好好学习。aiohttp用于编写异步爬虫开发效率低于其它库但是执行效率远高与其它库也是一个需要好好掌握的请求库。websocket是专门用于Websocket协议的库使用也较为简单可以在需要时再做了解。
http://www.pierceye.com/news/257848/

相关文章:

  • 网站系统建设技术服务费网站建设 专项资金变更
  • 网站建设画册怎么用eclipse做网页
  • 百度网站安全检测平台广州番禺营销型网站建设
  • 杭州大的做网站的公司甘肃省住房和城乡建设部网站首页
  • 网站建设与网页设计考试题棋牌软件开发搭建
  • 短链接生成网址wordpress主叶SEO优化
  • 免费的cms视频网站做cpa怎么建立自己网站
  • 在哪里找做网站的北京的招聘网站有哪些
  • 做旅行网站aspx网站开发
  • 网站接入服务器商查询wordpress更换端口
  • 网站网页设计师武义县网站建设
  • 中铁建设集团有限公司官网建站到网站收录到优化
  • 做seo网站要多少钱网页设计师好吗
  • 建设部网站 绿色建筑评价表哪里页面设计培训好
  • 西部数码网站源码虹桥做网站公司
  • 生鲜网站开发wordpress mysql 链接
  • 做网站是怎么挣钱的网站建设福永附近网络公司
  • 关于网站制作的评价.net网站制作综合实训报告
  • 合肥专业制作网站科技创新绘画作品图片
  • 站内推广的主要目的是商业空间设计心得体会
  • 网站建设丨金手指15phpcms建设网站
  • 怎么网上推广自己的产品郑州seo优化外包顾问阿亮
  • 灵台门户网站建设网站开发费用会计分录
  • wordpress替换公共js北京seo推广服务
  • 公司付的网站费怎么做分录黑色网站配色
  • 体育门户网站源码峰峰做网站
  • 山西网站建设多少钱电商网站建设需要
  • 海西电子商务网站建设wordpress 主题宽度
  • 网站建设首选公司wordpress需要mysql
  • 织梦 旅游网站模板深圳公司招牌制作