python-(6-2)爬虫---小试牛刀,获得网页页面内容

news/2024/7/19 10:57:06 标签: python, 爬虫, 百度

文章目录

  • 一 需求
  • 二 知识点
  • 三 分析
  • 四 代码
  • 五 补充说明

一 需求

爬取得到某搜索引擎官网的网站,并能在pycharm中打开

二 知识点

HTTP协议,即超文本传输协议,浏览器和服务器之间数据交换的基本协议。

服务器渲染:在服务器端,把数据和html整合在一起,统一返回给浏览器,在页面源代码能看到数据。

客户端渲染:第一次请求只要一个HTML骨架,第二次请求拿到数据,并进行数据展示,在页面源代码中,看不到数据。

请求的组成部分

请求行:请求方式,请求url地址,协议
请求头:服务器需要的附加信息
请求体:请求参数

响应的组成部分

状态行:状态码,协议
响应头:客户端需要的附加信息
响应体:客户端真正需要的内容

三 分析

1.从urllib库中导入urlopen,使用它来打开url
2.给需要爬虫的网页url赋值,再赋值给一个变量,可以得到对网站请求的相应信息
3.将得到相应的信息用写入的方式,打开一个新的文件,并用对应的编码方式进行解码
4.打开爬取到的网页,获取页面源代码,并关闭访问的请求

四 代码

python"># 导入需要的库
from urllib.request import urlopen

# 用url变量获得官网的网址
url = "http://www.baidu.com"

# 得到访问网站的响应信息
resp = urlopen(url)

# 用不关闭文件的方式,打开得到的html文件
# 读取内容时用utf-8编码,写入数据时当然也要用utf-8解码,否则打开的网页中文会变成乱码
with open("baidu.html",mode="w",encoding="utf-8") as f:

    # 用写入的方式读取网页内容,并根据源码中显示的编码方式进行解码
    f.write(resp.read().decode("utf-8"))

# 获得文件内容后,表示获取成功
print("over!!!!!!!!!!")

# 最后记得关闭访问请求,就像打开文件后需要关闭一样
resp.close()

上述代码是完整的获得网站内容的源代码。

在执行代码后,同一个目录的路径下会产生一个“baidu.html"文件,用谷歌浏览器打开这个文件,就可以得到网站官网的页面内容。

五 补充说明

1)在打开文件时使用的参数encoding="utf-8"与解码的参数decode("utf-8")一般要加上的。苹果电脑MAC系统的字符集编码解码默认是utf-8,但笔者的Windows系统字符集编码和解码默认是GBK,因此需要在此处添加参数设置。

2)此处笔者利用with open() as f打开文件,不需要考虑关闭文件;但如果如用open()函数打开网页,需要再加一行代码f.close()关闭文件。

3)在这里需要注意的是,下面的代码在执行后,得到的是网站官网源代码的内容,而不是百度网页的内容信息(如下图)。

python"># 导入需要的库
from urllib.request import urlopen

# 用url变量获得官网的网址
url = "http://www.baidu.com"

# 得到访问网站的响应信息
resp = urlopen(url)

# 输出获得的相应信息
print(resp.read())

http://www.niftyadmin.cn/n/4923.html

相关文章

【C++】栈~~(很详细哦)

在前几天,我们刚一起学过顺序表,链表(无头单向不循环,有头双向循环),这两种都属于线性表因为是一系列存储的。而以后的哈希表则是散列表 今天我们看一下栈 目录 1.栈的介绍 2.实现 3.题目 1.栈的介绍 …

Python 5个必会小技巧

很多时候学习是一种难者不会,会者不难的事情。 下面的5个python技巧是性价比极高的知识点,一学就会,不难但是相当管用。 使用交互模式 使用python -i xxxx.py可以直接进入python的交互模式,可以很方便的调用xxxx.py中定义的方法…

车规级芯片之 MCU、MPU、DSP、FPGA、SOC

1.概述 随着处理器技术的不断发展,CPU(Central Processing Unit)的发展逐渐出现三种分支,分别是MCU(Micro Controller Unit,微控制器单元) 和MPU(Micro Processor Unit,微处理器单元)和DSP(Digital Signal …

LTE无线网络优化基础

一、LTE无线网络优化介绍   1.什么是LTE   LTE是Long Term Evolution的缩写,全称为3GPP Long Term Evolution,中文一般翻译为3GPP长期演进技术,为第三代合作伙伴计划(3GPP)标准,使用“正交频分复用”…

去除有重复的行

【问题】 I have a csv file and I have duplicate as well as unique data getting add to it on a daily basis. This involves too many duplicates. I have to remove the duplicates based on specific columns. For eg: csvfile1: title1 title2 title3 title4 title5…

web前端期末大作业:基于HTML+CSS+JavaScript制作鲜花礼品在线购物网站设计(19页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

39.SSH远程终端连接工具

目录 1.SSH简介: 2.SSH登录原理: 3.SSH结构: 4.SSH基本用法: 5.SSH服务认证类型: (2)基于密钥认证: 6.SSH服务常见配置: (1)修改默认端口&…

SpringSecurity Oauth2实战 - 10 自定义SpEL权限表达式配置白名单url不需要token认证和鉴权

文章目录1. 同时配置url和权限表达式1. /api/v1/doc 配置 antMatchers("/api/v1/doc").permitAll()2. /api/v1/doc 配置 PreAuthorize("hasAuthority(knowledge)")3. 启动项目测试2. 配置白名单url不需要token认证1. 白名单属性配置类 WhiteUrlAutoConfigu…