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

网络请求之urllib.request的使用(Get方式)

urllib.request用于打开和读取url,模拟浏览器发送一个http请求,并获取响应结果。

urllib.request.urlopen的语法格式:

urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault=False,context=None)

参数说明:
  • url
    url参数是str类型的地址,也就是访问的url,例如:https://image.baidu.com
  • data
    默认值为None,urllib判断参数data是否为None从而区分请求方式。或参数data为None,则代表请求方式为Get,反之则为Post。参数data以字典形式存储数据,并将参数data由字典类型转换成字节类型完成Post请求。
返回对象

urlopen函数,返回的结果,是一个http.client.HTTPResponse对象

Get方式爬取数据

import urllib.requestresponse=urllib.request.urlopen("https://image.baidu.com")
result=response.read()
print(result)

查看打印的部分内容(因为百度的页面数据太多了)

b'<!DOCTYPE html>\n<html lang="">\n  <head>\n    <meta charset=utf-8>\n    <meta http-equiv=X-UA-Compatible content="IE=edge">\n    <meta name=viewport content="width=device-width,viewport-fit=cover,initial-scale=1,maximum-scale=1,user-scalable=0">\n    <title>\xe5\x9b\xbe\xe6\x90\x9c\xe9\xa6\x96\xe9\xa1\xb5</title>\n   

发现titile居然是一堆十六进制的乱码,只说明我们代码里还没有处理字符集,这时候就需要去浏览器中打开网址:https://image.baidu.com,查看源代码的字符集了,发现字符集是“utf-8”
修改代码重新爬取试试:

import urllib.requestresponse=urllib.request.urlopen("https://image.baidu.com")
result=response.read().decode("utf-8") #decode就是处理编码格式的
print(result)

输出的内容这才对:

<!DOCTYPE html>
<html lang=""><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,viewport-fit=cover,initial-scale=1,maximum-scale=1,user-scalable=0"><title>图搜首页</title>...</head>
</html> 

所以呢,总结起来,爬虫的时候,一定要分析目标页面的编码,避免返工改一些无聊的bug,当然程序员防御性编程这无话可说

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数组 704.二分查找法
  • which 命令在Linux中是一个快速查找可执行文件位置的工具
  • el-table的selection多选表格改为单选
  • 【Diffusion学习】【生成式AI】Stable Diffusion、DALL-E、Imagen 背後共同的套路
  • 美式键盘 QWERTY 布局的来历
  • TS 入门(七):TypeScript模块与命名空间
  • Unity宏和编辑器
  • 基础动态规划题目基础动态规划题目
  • Java 快速入门学习 -- Day 2
  • 【持续集成_06课_Jenkins高级pipeline应用】
  • Java常用的API_02(正则表达式、爬虫)
  • 【教学类-67-02】20240716毛毛虫ABB排序
  • 探索十大最佳产品设计软件:软件排行榜揭晓
  • Lora模型训练的参数-学习笔记
  • 【学习笔记】无人机(UAV)在3GPP系统中的增强支持(九)-无人机服务区分离
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 10个确保微服务与容器安全的最佳实践
  • ES学习笔记(12)--Symbol
  • idea + plantuml 画流程图
  • MQ框架的比较
  • mysql_config not found
  • Puppeteer:浏览器控制器
  • python_bomb----数据类型总结
  • TypeScript迭代器
  • 理清楚Vue的结构
  • 聊一聊前端的监控
  • 应用生命周期终极 DevOps 工具包
  • 终端用户监控:真实用户监控还是模拟监控?
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 湖北分布式智能数据采集方法有哪些?
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​人工智能书单(数学基础篇)
  • #Linux(Source Insight安装及工程建立)
  • (1)Android开发优化---------UI优化
  • (12)Hive调优——count distinct去重优化
  • (3)选择元素——(17)练习(Exercises)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • ******之网络***——物理***
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .DFS.
  • .naturalWidth 和naturalHeight属性,
  • .Net 6.0--通用帮助类--FileHelper
  • .Net IE10 _doPostBack 未定义
  • .NET MVC 验证码
  • .NET 使用 XPath 来读写 XML 文件
  • .NET中的Exception处理(C#)
  • @ModelAttribute 注解
  • @RequestMapping 和 @GetMapping等子注解的区别及其用法
  • [ IO.File ] FileSystemWatcher