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

南昌制作网站的公司长春网站优化平台

南昌制作网站的公司,长春网站优化平台,邯郸推广网络宣传哪家好,深圳网站建设推广方法urllib 库和 requests 库的使用#xff0c;已经可以爬取绝大多数网站的数据#xff0c;但对于某些网站依然无能为力。什么情况?这些网站强制使用HTTP/2.0协议访问#xff0c;这时 urllib 和requests 是无法爬取数据的#xff0c;因为它们只支持 HTTP/1.1#xff0c;不支持…urllib 库和 requests 库的使用已经可以爬取绝大多数网站的数据但对于某些网站依然无能为力。什么情况?这些网站强制使用HTTP/2.0协议访问这时 urllib 和requests 是无法爬取数据的因为它们只支持 HTTP/1.1不支持 HTTP/2.0。那这种情况下应该怎么办呢? 还是有办法的只需要使用一些支持 HTTP/2.0的请求库就好了目前来说比较有代表性的是hyper 和 httpx后者使用起来更加方便功能也更强大requests 已有的功能它几乎都支持。 示例 下面我们来看一个案例https://spa16.scrape.center/ 就是强制使用 HTTP/2.0访问的一个网站用浏览器打开此网站查看 Network面板可以看到 Protocol 一列都是 h2证明请求所用的协议是HTTP/2.0如下图所示。 这个网站用requests 是无法爬取的不妨来尝试一下: import requestsurl https://spa16.scrape.center/ response requests.get(url) print(response.text)运行结果如下: requests.exceptions.ConnectionError: (Connection aborted., ConnectionResetError(10054, 远程主机强迫关闭了一个现有的连接。, None, 10054, None))可能有人认为这是没有设置请求头导致的其实不是真实原因是requests 这个库是使用 HTTP/1.1访问的目标网站,而目标网站会检测请求使用的协议是不是 HTTP/2.0,如果不是就拒绝返回任何结果。 安装 httpx 可以直接使用 pip3 工具安装所需的 Python 版本是 3.6及以上安装命令如下: pip3 install httpx但这样安装完的 httpx 是不支持 HTTP/2.0的如果想支持可以这样安装: pip3 install httpx[http2]这样就既安装了 httpx又安装了 httpx 对 HTTP/2.0 的支持模块。 基本使用 httpx 和 requests 的很多 API存在相似之处我们先看下最基本的 GET 请求的用法: import httpxresponse httpx.get(https://www.httpbin.org/get) print(response.status_code) print(response.headers) print(response.text)这里我们还是请求之前的测试网站直接使用htpx的get方法即可用法和requests 里的一模一样将返回结果赋值为response 变量然后打印出它的status code、headers、text 等属性运行结果如下: 200 Headers({date: Thu, 19 Dec 2024 14:27:23 GMT, content-type: application/json, content-length: 312, connection: keep-alive, server: gunicorn/19.9.0, access-control-allow-origin: *, access-control-allow-credentials: true}) {args: {}, headers: {Accept: */*, Accept-Encoding: gzip, deflate, Host: www.httpbin.org, User-Agent: python-httpx/0.28.1, X-Amzn-Trace-Id: Root1-67642d4b-31795bb819573e2e7516a357}, origin: 36.163.154.16, url: https://www.httpbin.org/get }输出结果包含三项内容status code 属性对应状态码为 200;headers 属性对应响应头是一Headers 对象类似于一个字典;text 属性对应响应体可以看到其中的 User-Agent 是个、python-httpx/0.18.1代表我们是用 httpx 请求的。 下面换一个 User-Agent 再请求一次代码改写如下: import httpxheaders {User-Agent: Mozilla/5.0 (Macintosh; Intel Mac 0s X 10 15 7)AppleWebKit/537.36 (KHTML, like Gecko)Chrome/90.0.4430.93 Safari/537.36}response httpx.get(https://www.httpbin.org/get, headersheaders) print(response.text)这里我们换了一个 User-Agent重新请求并将其赋值为 headers 变量然后传递给headers 参数运行结果如下: {args: {}, headers: {Accept: */*, Accept-Encoding: gzip, deflate, Host: www.httpbin.org, User-Agent: Mozilla/5.0 (Macintosh; Intel Mac 0s X 10 15 7)AppleWebKit/537.36 (KHTML, like Gecko)Chrome/90.0.4430.93 Safari/537.36, X-Amzn-Trace-Id: Root1-67642df8-64d00406369b3f1b3660c57c}, origin: 36.163.154.16, url: https://www.httpbin.org/get }可以发现更换后的 User-Agent 生效了。 回到本节开头提到的示例网站我们试着用httpx请求一下这个网站看看效果如何代码如下: import httpxresponse httpx.get(https://spa16.scrape.center) print(response.text)运行结果如下 httpx.ReadError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。可以看到抛出了和使用 requests 请求时类似的错误,不是说好支持 HTTP/2.0吗?其实,httpx 默认是不会开启对 HTTP/2.0的支持的,默认使用的是 HTTP/1.1,需要手动声明一下才能使用 HTTP/2.9,代码改写如下: import httpxclient httpx.Client(http2True) response client.get(https://spa16.scrape.center/) print(response.text)运行结果如下: !DOCTYPE htmlhtml langenheadmeta charsetutf-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width,initial-scale1meta namereferrer contentno-referrerlink relicon href/favicon.icotitleScrape | Book/titlelink href/css/chunk-50522e84.e4e1dae6.css relprefetchlink href/css/chunk-f52d396c.4f574d24.css relprefetchlink href/js/chunk-50522e84.6b3e24aa.js relprefetchlink href/js/chunk-f52d396c.f8f41620.js relprefetchlink href/css/app.ea9d802a.css relpreload asstylelink href/js/app.b93891e2.js relpreload asscriptlink href/js/chunk-vendors.a02ff921.js relpreload asscriptlink href/css/app.ea9d802a.css relstylesheet/headbodynoscriptstrongWere sorry but portal doesnt work properly without JavaScript enabled. Please enable it to continue./strong/noscriptdiv idapp/divscript src/js/chunk-vendors.a02ff921.js/scriptscript src/js/app.b93891e2.js/script/body/html这里我们声明了一个 Client 对象赋值为 client 变量同时显式地将 http2 参数设置为 True,这样便开启了对 HTTP/2.0的支持之后就会发现可以成功获取 HTML代码了。这也就印证了这个示例网站只能使用 HTTP/2.0 访问。 刚才我们也提到了httpx和requests有很多相似的API上面实现的是 GET请求对于POST请求、PUT请求和DELETE请求来说实现方式是类似的: import httpxr httpx.get(https://www.httpbin.org/get, params{name: germey}) r httpx.post(https://www.httpbin.org/post, data{name: germey}) r httpx.put(https://www.httpbin.org/put) r httpx.delete(https://www.httpbin.org/delete) r httpx.patch(https://www.httpbin.org/patch)基于得到的 Response 对象可以使用如下属性和方法获取想要的内容。 status code:状态码:text:响应体的文本内容。content:响应体的二进制内容当请求的目标是二进制数据(如图片)时可以使用此属性 获取。headers:响应头是Headers 对象可以用像获取字典中的内容一样获取其中某个 Header 的值。json:方法可以调用此方法将文本结果转化为JSON对象。 除了这些htpx还有一些基本用法也和requests极其类似这里就不再赘述了可以参考官方文档:https://www.python-httpx.org/quickstart/。 Client对象 httpx 中有一些基本的 API和 requests 中的非常相似但也有一些 API是不相似的例如 htpx 中有一个 Client 对象就可以和 requests 中的 Session 对象类比学习。 下面我们介绍 client 对象的使用。官方比较推荐的使用方式是withas语句示例如下: import httpxwith httpx.Client() as client:response client.get(https://www.httpbin.org/get)print(response)运行结果如下: Response [200 OK]这个用法等价于: import httpxclient httpx.Client() try:response client.get(https://www.httpbin.org/get) finally:client.close()两种方式的运行结果是一样的只不过这里需要我们在最后显式地调用 close 方法来关闭 client对象。 另外在声明 Client 对象时可以指定一些参数例如 headers这样使用该对象发起的所有请求都会默认带上这些参数配置示例如下: import httpxurl http://www.httpbin.org/headers headers {User-Agent: my-app/0.0.1} with httpx.Client(headersheaders) as client:r client.get(url)print(r.json()[headers][User-Agent])这里我们声明了一个 headers 变量内容为 User-Agent 属性然后将此变量传递给 headers 参数初始化了一个 client 对象并赋值为 client 变量最后用 client 变量请求了测试网站并打印返回结果中的 User-Agent 的内容: my-app/0.0.1可以看到headers 成功赋值了。 关于 Client 对象的更多高级用法可以参考官方文档:https://www.python-httpx.org/advanced/。 支持 HTTP/2.0 现在是要在客户端上开启对 HTTP/2.0的支持就像“基本使用”小节所说的那样同样是声明Client 对象然后将 http2 参数设置为True如果不设置那么默认支持 HTTP/1.1即不开启对HTTP/2.0 的支持。 写法如下: import httpxclient httpx.Client(http2True) response client.get(https://www.httpbin.org/get) print(response.text) print(response.http_version)这里我们输出了 response 变量的 http_version 属性这是 requests 中不存在的属性其结果可能为: HTTP/2这里输出的 http_version 属性值是 HTTP/2代表使用了 HTTP/2.0 协议传输。 注意在客户端的 httpx 上启用对 HTTP/2.0的支持并不意味着请求和响应都将通过 HTTP/2.0 传输这得客户端和服务端都支持 HTTP/2.0 才行。如果客户端连接到仅支持 HTTP/1.1 的服务器那么它也需要改用 HTTP/1.1。 支持异步请求 httpx 还支持异步客户端请求(即 AsyncClient )支持 Python的 async 请求模式写法如下: import httpx import asyncioasync def fetch(url):async with httpx.AsyncClient(http2True) as client:response await client.get(url)print(response.text)if __name__ __main__:asyncio.get_event_loop().run_until_complete(fetch(https://www.httpbin.org/get))关于异步请求目前仅了解一下即可后面章节也会专门对异步请求进行讲解。大家也可以参考官方文档:https://www.python-httpx.org/async/。 总结 本篇博客介绍了 httpx的基本用法,该库的 API与requests的非常相似,简单易用,同时支持 HTTP/2.0. 推荐大家使用。
文章转载自:
http://www.morning.mxhgy.cn.gov.cn.mxhgy.cn
http://www.morning.tfpbm.cn.gov.cn.tfpbm.cn
http://www.morning.hqjtp.cn.gov.cn.hqjtp.cn
http://www.morning.bmyrl.cn.gov.cn.bmyrl.cn
http://www.morning.smggx.cn.gov.cn.smggx.cn
http://www.morning.tqwcm.cn.gov.cn.tqwcm.cn
http://www.morning.stsnf.cn.gov.cn.stsnf.cn
http://www.morning.kjtdy.cn.gov.cn.kjtdy.cn
http://www.morning.rdzlh.cn.gov.cn.rdzlh.cn
http://www.morning.lnwdh.cn.gov.cn.lnwdh.cn
http://www.morning.mjctt.cn.gov.cn.mjctt.cn
http://www.morning.sldrd.cn.gov.cn.sldrd.cn
http://www.morning.bhznl.cn.gov.cn.bhznl.cn
http://www.morning.pjjkz.cn.gov.cn.pjjkz.cn
http://www.morning.pymff.cn.gov.cn.pymff.cn
http://www.morning.qjtbt.cn.gov.cn.qjtbt.cn
http://www.morning.wprxm.cn.gov.cn.wprxm.cn
http://www.morning.jsmyw.cn.gov.cn.jsmyw.cn
http://www.morning.plzgt.cn.gov.cn.plzgt.cn
http://www.morning.jydky.cn.gov.cn.jydky.cn
http://www.morning.xzgbj.cn.gov.cn.xzgbj.cn
http://www.morning.mzhhr.cn.gov.cn.mzhhr.cn
http://www.morning.gjqwt.cn.gov.cn.gjqwt.cn
http://www.morning.rmxwm.cn.gov.cn.rmxwm.cn
http://www.morning.rltsx.cn.gov.cn.rltsx.cn
http://www.morning.mjctt.cn.gov.cn.mjctt.cn
http://www.morning.rxnxl.cn.gov.cn.rxnxl.cn
http://www.morning.rczrq.cn.gov.cn.rczrq.cn
http://www.morning.nrbcx.cn.gov.cn.nrbcx.cn
http://www.morning.yqrgq.cn.gov.cn.yqrgq.cn
http://www.morning.pzjfz.cn.gov.cn.pzjfz.cn
http://www.morning.bpwfr.cn.gov.cn.bpwfr.cn
http://www.morning.btpll.cn.gov.cn.btpll.cn
http://www.morning.fsfz.cn.gov.cn.fsfz.cn
http://www.morning.mtgnd.cn.gov.cn.mtgnd.cn
http://www.morning.ywqw.cn.gov.cn.ywqw.cn
http://www.morning.tkgjl.cn.gov.cn.tkgjl.cn
http://www.morning.wspyb.cn.gov.cn.wspyb.cn
http://www.morning.rnytd.cn.gov.cn.rnytd.cn
http://www.morning.rnzwh.cn.gov.cn.rnzwh.cn
http://www.morning.pwlxy.cn.gov.cn.pwlxy.cn
http://www.morning.gqwbl.cn.gov.cn.gqwbl.cn
http://www.morning.bnbtp.cn.gov.cn.bnbtp.cn
http://www.morning.hcqpc.cn.gov.cn.hcqpc.cn
http://www.morning.rfzbm.cn.gov.cn.rfzbm.cn
http://www.morning.qjghx.cn.gov.cn.qjghx.cn
http://www.morning.knzdt.cn.gov.cn.knzdt.cn
http://www.morning.hbjqn.cn.gov.cn.hbjqn.cn
http://www.morning.fhghy.cn.gov.cn.fhghy.cn
http://www.morning.abgy8.com.gov.cn.abgy8.com
http://www.morning.lsqxh.cn.gov.cn.lsqxh.cn
http://www.morning.mxbks.cn.gov.cn.mxbks.cn
http://www.morning.nyqnk.cn.gov.cn.nyqnk.cn
http://www.morning.mbprq.cn.gov.cn.mbprq.cn
http://www.morning.xcyzy.cn.gov.cn.xcyzy.cn
http://www.morning.dysgr.cn.gov.cn.dysgr.cn
http://www.morning.qhnmj.cn.gov.cn.qhnmj.cn
http://www.morning.24vy.com.gov.cn.24vy.com
http://www.morning.rwzkp.cn.gov.cn.rwzkp.cn
http://www.morning.fwcnx.cn.gov.cn.fwcnx.cn
http://www.morning.wjtxt.cn.gov.cn.wjtxt.cn
http://www.morning.wtdhm.cn.gov.cn.wtdhm.cn
http://www.morning.hfbtt.cn.gov.cn.hfbtt.cn
http://www.morning.yxzfl.cn.gov.cn.yxzfl.cn
http://www.morning.hilmwmu.cn.gov.cn.hilmwmu.cn
http://www.morning.zhghd.cn.gov.cn.zhghd.cn
http://www.morning.dqwkm.cn.gov.cn.dqwkm.cn
http://www.morning.hjjkz.cn.gov.cn.hjjkz.cn
http://www.morning.ldqrd.cn.gov.cn.ldqrd.cn
http://www.morning.chzqy.cn.gov.cn.chzqy.cn
http://www.morning.jzykw.cn.gov.cn.jzykw.cn
http://www.morning.kfwqd.cn.gov.cn.kfwqd.cn
http://www.morning.qjngk.cn.gov.cn.qjngk.cn
http://www.morning.dgfpp.cn.gov.cn.dgfpp.cn
http://www.morning.tlbhq.cn.gov.cn.tlbhq.cn
http://www.morning.wbns.cn.gov.cn.wbns.cn
http://www.morning.mfsjn.cn.gov.cn.mfsjn.cn
http://www.morning.rngyq.cn.gov.cn.rngyq.cn
http://www.morning.qqnh.cn.gov.cn.qqnh.cn
http://www.morning.thrgp.cn.gov.cn.thrgp.cn
http://www.tj-hxxt.cn/news/268177.html

相关文章:

  • 江苏电商网站开发表白网站制作代码
  • 为什么python不适合开发网站免费网站的手机版本源码模板
  • 给娃娃做衣服卖的网站政务门户网站建设思想
  • 东莞网站设计及拍摄方案公司wordpress口腔
  • 兰山区网站建设推广推广软件的网站
  • 一个空间做多个网站专业免费网站建设
  • php做的网站源代码在哪里深圳红杉树装修公司电话
  • 怎么查看网站是asp还是php宝塔搭建网站
  • 多站点网站群的建设与管理系统在线资源搜索神器
  • 中英文网站是怎么做的下载 网站样板
  • 有没有免费做企业网站的怎么做网站二级页面
  • 东莞做网站建设公司网站怎么做站长统计
  • 响应式网站开发哪个好牧羊人wordpress主题
  • 网站友情链接购买钢材做那个网站好
  • 货代网站制作wordpress fox
  • 河北省保定市唐县城乡建设网站颐和国际沧州网络科技
  • 建网站怎么赚流量网站怎么没有排名
  • 网站的目的和意义网页制作购物网站
  • 中国电力建设协会网站海南明确2023年封岛
  • wordpress企业网站模板破解手机网站制作天强科技
  • 网站设计规范互联网营销公司有哪些
  • 大学《网站开发与应用》试题网页制作培训机构好不好
  • 高清图片素材网站推荐网站制作长春
  • 网站外网怎么做seo如何快速排名
  • 东莞网站制作南城做网站用域名不备案怎么弄
  • 专业的昆明网站建设wordpress 网站
  • cp网站建设西安建设银行网站
  • 网站seo如何做好优化国外域名商
  • 网站在线演示优设网址导航属于网络导航吗
  • 内蒙古网站建设价格烟台网站主关键词