6.第一个Python爬虫程序

news/2025/3/13 4:08:51/

使用 Python 内置的 urllib 库获取网页的 html 信息。注意,urllib 库属于 Python 的标准库模块,无须单独安装,它是 Python 爬虫的常用模块

获取网页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 0x000001F71D8A6220>

也有另外一种导包方式,也就是使用 from

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

2) 输出HTML信息

# 导包,发起请求使用urllib库的request请求模块
import urllib.request
# urlopen()向URL发请求,返回响应对象,注意url必须完整
response=urllib.request.urlopen('http://www.baidu.com/')
# 提取响应内容
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() 转换为字符串

常用方法

urllib库的常用方法

1) urlopen()

表示向网站发起请求并获取响应对象

urllib.request.urlopen(url,timeout)
  • 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/1331151.html

相关文章

微信小程序之全局配置-window和tabBar

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

[笔记]Spring AOP

Spring AOP&#xff08;Aspect Oriented Programming&#xff09; AOP将应用程序分为核心业务和非核心的公共功能&#xff0c;AOP的关注点是系统中的非核心的公共功能&#xff1b; AOP可以通过预编译或者运行期动态代理的方式&#xff0c;为横跨多个对象&#xff08;没有继承关…

Linux:shell脚本:基础使用(10)《(),[],{}分别有上面什么作用》

单小括号&#xff08;&#xff09; 命令组&#xff1a;组合多条命令一起执行&#xff0c;并按照顺序执行。 [rootlocalhost ~]# (umask 0077;mkdir -p test;ls -ld test) drwx------ 2 root root 6 1月 22 15:05 test [rootlocalhost ~]# 替换命令&#xff1a;效果等于反撇…

F - Digital Roots HUOJ

题目 The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two or more digits, those digits are summed and the pro…

计算机408真的很难吗❓|深度分析+实操上岸规划

在下面这篇文章中&#xff0c;LUCEN详细分析了24考研的难度以及25考研人该怎么办 24考研计算机很难&#xff01;25考研你就这么干 如果你对于计算机考研择校有任何疑问&#xff0c;那么下面这篇文章一定能够帮助你&#xff1a; 计算机择校指南&#xff0c;内含300所院校 如…

递归和尾递归(用C语言解斐波那契和阶乘问题)

很多人都对递归有了解&#xff0c;但是为尾递归很少&#xff0c;所以这次来专门讲一讲关于尾递归的一些问题。 什么是尾递归 如果一个函数中所有递归形式的调用都出现在函数的末尾&#xff0c;我们称这个递归函数是尾递归的。因为在一些题目的做法中&#xff0c;我们可以发现…

Vue 模块化使用 Vuex

Vuex 是 Vue.js 的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规…

【Linux】yum

个人主页 &#xff1a; zxctsclrjjjcph 文章封面来自&#xff1a;艺术家–贤海林 如有转载请先通知 yum 1. 什么是yum&#xff1f;2. Linux系统(Centos)的生态3. yum的相关操作4. yum的本地配置5. 如何安装软件 1. 什么是yum&#xff1f; yum是一个软件下载安装的一个客户端&a…