一个Python爬虫程序

news/2025/2/4 5:52:43/

获取网页html信息

1) 获取响应对象

向百度(百度一下,你就知道)发起请求,获取百度首页的 HTML 信息,代码如下:

#导包,发起请求使用urllib库的request请求模块
import urllib.request
# urlopen()向URL发请求,返回响应对象,注意url必须完整
response=urllib.request.urlopen('http://www.baidu.com/')
print(response)

上述代码会返回百度首页的响应对象, 其中 urlopen() 表示打开一个网页地址。注意:请求的 url 必须带有 http 或者 https 传输协议。

输出结果,如下所示:

<http.client.HTTPResponse object at 0x032F0F90>

上述代码也有另外一种导包方式,也就是使用 from,代码如下所示: 

#发起请求使用urllib库的request请求模块
from urllib import request
response=request.urlopen('http://www.baidu.com/')
print(response)

2) 输出HTML信息

在上述代码的基础上继续编写如下代码:

#提取响应内容
html = response.read().decode('utf-8')
#打印响应内容
print(html)

输出结果如下,由于篇幅过长,此处只做了简单显示: 

<!DOCTYPE html><!--STATUS OK--> <html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta content="always" name="referrer"><meta name="theme-color" content="#2932e1"><meta name="description" content="全球最大的中文搜索引擎、致力于让网民更便捷地获取信息,找到...">...</html>

通过调用 response 响应对象的 read() 方法提取 HTML 信息,该方法返回的结果是字节串类型(bytes),因此需要使用 decode() 转换为字符串。程序完整的代码程序如下:

import urllib.request
# urlopen()向URL发请求,返回响应对象
response=urllib.request.urlopen('http://www.baidu.com/')
# 提取响应内容
html = response.read().decode('utf-8')
# 打印响应内容
print(html)

通过上述代码获取了百度首页的 html 信息,这是最简单、最初级的爬虫程序。后续我们还学习如何分析网页结构、解析网页数据,以及存储数据等。

常用方法

在本节您认识了第一个爬虫库 urllib,下面关于 urllib 做简单总结。

1) urlopen()

表示向网站发起请求并获取响应对象,如下所示:

urllib.request.urlopen(url,timeout)

urlopen() 有两个参数,说明如下:

  • url:表示要爬取数据的 url 地址。
  • timeout:设置等待超时时间,指定时间内未得到响应则抛出超时异常。

2) Request()

该方法用于创建请求对象、包装请求头,比如重构 User-Agent(即用户代理,指用户使用的浏览器)使程序更像人类的请求,而非机器。重构 User-Agent 是爬虫和反爬虫斗争的第一步。在下一节会做详细介绍。

urllib.request.Request(url,headers)

参数说明如下:

  • url:请求的URL地址。
  • headers:重构请求头。

3) html响应对象方法

bytes = response.read() # read()返回结果为 bytes 数据类型
string = response.read().decode() # decode()将字节串转换为 string 类型
url = response.geturl() # 返回响应对象的URL地址
code = response.getcode() # 返回请求时的HTTP响应码

4) 编码解码操作

#字符串转换为字节码
string.encode("utf-8") 
#字节码转换为字符串
bytes.decode("utf-8") 

 

 

 

 

 

 

 

 

 

 


http://www.ppmy.cn/news/105475.html

相关文章

1.MySQL安装与配置

1.MySQL安装与配置 &#x1f4e4;1 数据库介绍&#x1f4e4;&#x1f6aa;1.1关于MySQL主要要学啥&#x1f6aa; ✉️2 MySQL服务器安装✉️&#x1f4c4;2.1 Windows绿色安装&#x1f4c4;&#x1f4d1;2.2 Windows中重装MySQL&#x1f4d1; &#x1f4e8;3 Mac中常见的安装问…

机器学习常识 9: 如何定义机器学习问题

摘要: 做研究应该以问题为导向. 机器学习问题定义清楚了, 才能保证在解决它的过程中不出大的偏差. 准确地抓住问题, 是这一系列贴子的重要动机. 本贴起到承上启下的作用: 一方面前面已经有了问题定义的例子, 另一方面接下来会有更多的问题定义. 1. 机器学习问题定义的模式 多…

9个服务端提升debug效率的IDEA Debugger技巧

不可否认&#xff0c;未来的一到两年中&#xff0c;程序员的编码体验将会发生剧烈的变化。作为一名一线开发&#xff0c;要如何提前准备&#xff0c;来应对这种变化呢&#xff1f; 前言 在AIGC时代&#xff0c;虽然深度学习模型可以仅通过一段注释来生成我们想要的代码&#xf…

谷歌周彦祺:LLM浪潮中的女性科学家多面手丨智源大会嘉宾风采

导读 大模型研发竞赛如火如荼&#xff0c;谷歌紧随OpenAI其后推出PalM2、Gemini等系列模型。Scaling Law是否仍然适用于当下的大模型发展&#xff1f;科技巨头与初创企业在竞争中各有哪些优势和劣势&#xff1f;模型研究者应秉持哪些社会责任&#xff1f; 2023智源大会「基础模…

全国流体力学盛会召开,飞桨AI4S携最新科研进展亮相西湖大学

‍‍‍‍ 5月20-21日&#xff0c;第四届全国智能流体力学研讨会暨第二届智能流体力学产业联合体大会在西湖大学召开。此次会议由中国力学学会、中国空气动力学会、《水动力学研究与进展》编委会、西湖大学、浙江大学、上海交通大学、中国船舶集团第七〇八研究所主办&#xff1b…

Ae:稳定运动

使用跟踪器 Tracker面板的稳定运动 Stabilize Motion功能&#xff0c;可通过手动添加和设置跟踪点来跟踪对象的运动&#xff0c;将获得的跟踪数据对图层本身进行反向变换&#xff0c;从而达到稳定画面的目的。 Ae菜单&#xff1a;窗口/跟踪器 Tracker 点击跟踪器面板上的“稳定…

长文教你如何正确使用ChatGPT提高学习效率!

最近 Chat GPT 很&#x1f525;&#xff0c;被大家评为无所不能的最强AI。据说&#xff0c;有百分之八十的留学生已经在用ChatGPT 来写作业了&#xff0c;因为ChatGPT真的是有问必答&#xff0c;光速回复&#xff0c;复制粘贴都没有它回答的快。 目录 Part.1 什么是ChatGPT&a…

【AUTOSAR】Com通讯栈配置说明(一)---- Can模块

通讯栈 模块 项目通讯栈 主要包含如下几个模块&#xff1a; 各模块详细配置说明 Can模块 这部分最终会导入到EB 中&#xff0c;通过EB 生成CanDriver 代码&#xff0c; 具体参数的介绍已经在EB 配置说明中介绍过。 CanController ​​​​​​​CanHaredWareObject 以其中一…