6.第一个Python爬虫程序

使用 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") 

相关推荐

  1. 6.第一Python爬虫程序

    2024-01-27 16:42:01       41 阅读
  2. 入门Docker:构建你的第一Python爬虫容器

    2024-01-27 16:42:01       31 阅读
  3. 第一爬虫:获取演员表

    2024-01-27 16:42:01       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-27 16:42:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-27 16:42:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-27 16:42:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-27 16:42:01       18 阅读

热门阅读

  1. 二叉树的先序,中序,后序遍历

    2024-01-27 16:42:01       41 阅读
  2. redis面试题合集-高级

    2024-01-27 16:42:01       25 阅读
  3. Linux命令-apk命令(Alpine Linux 下的包管理工具)

    2024-01-27 16:42:01       30 阅读
  4. 树莓派开机重启测试

    2024-01-27 16:42:01       34 阅读
  5. C语言什么是运算符的目?怎样进行区分?

    2024-01-27 16:42:01       34 阅读
  6. 【mysql把一个字段分割成两个字段】

    2024-01-27 16:42:01       35 阅读
  7. 考研机试 成绩排序

    2024-01-27 16:42:01       27 阅读
  8. 七、SQL编程

    2024-01-27 16:42:01       25 阅读
  9. vue2后台管理项目权限的分类

    2024-01-27 16:42:01       29 阅读
  10. 系统架构16 - 软件工程(4)

    2024-01-27 16:42:01       27 阅读
  11. Element修改树结构样式--虚线树

    2024-01-27 16:42:01       27 阅读