一个Python爬虫程序

news/2024/7/19 12:02:47 标签: 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 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.niftyadmin.cn/n/374435.html

相关文章

读数据压缩入门笔记02_二进制和熵

1. 十进制 1.1. 现代数学建立在十进制计数系统之上 2. 二进制 2.1. 二进制计数系统的工作原理与十进制计数系统一样&#xff0c;唯一的区别是前者的基数为2&#xff0c;而后者的基数为10 2.2. 数据压缩所做的就是尽可能减少表示特定数据集时所需的二进制位数量 2.3. 给定任…

.net 混淆工具

obfuscation tools .net 社区有很多混淆工具, 比如这个清单: https://github.com/NotPrab/.NET-Obfuscator 比较有名的商业工具有 .NET REACTOR https://www.eziriz.com/, 开源软件中, 最受欢迎的有: obfuscar https://github.com/obfuscar/obfuscar老版 ConfuserEx https://gi…

知识点滴 - POSIX vs SUS vs LSB

SUS扩展了POSIX&#xff1b;LSB扩展了POSIX和SUS&#xff0c;但有一些冲突。 只有经过SUS认证的操作系统才能被称为 "Unix"&#xff08;因为SUS的所有者Open Group拥有Unix商标&#xff09;&#xff1b;并非所有的Linux发行版都符合LSB&#xff0c;例如Debian和Ubunt…

最全面的WMS系统选购指南:从功能到价格一网打尽

WMS&#xff08;仓库管理系统&#xff09;是一款能够提高仓储和物流企业效率的重要工具&#xff0c;并且能够帮助客户更好地管理他们的供应链网络。但是市面上有很多不同的WMS系统&#xff0c;如何选出最适合自己的系统呢&#xff1f;下面将为您介绍全面的WMS系统选购指南。 功…

华硕梅林固件成功安装astrill后,点进去一片空白

在华硕梅林固件成功安装astrill后&#xff0c;导航栏左侧出现astrill选项&#xff0c;但是点击进去却是一片空白的页面。google了一下可能是astrill的bug&#xff0c;但是有一个简单的解决办法。 不要使用域名的方式登录管理后台http://www.asusrouter.com/ 改成实际ip地址登…

为什么北欧的顶级程序员数量远超中国?(续)

之前写过一篇文章《为什么北欧的顶级程序员数量远超中国&#xff1f;》&#xff0c;讲了北欧大神们开发的Linux、MySQL、Chrome V8、MineCraft、QT等优秀软件&#xff0c;分析了北欧有如此多顶级程序员的主要原因。 有位读者Ven 源 留言说&#xff0c;除了文章中教育优势&…

双轴高精度倾角传感器安装方式和485协议

倾角安装注意事项 在安装传感器时&#xff0c;不正确安装会导致测量角度误差偏大。安装时请注意以下两点&#xff1a; 1.“两面”指安装面与被测物体的安装面紧靠&#xff08;被测物体的安装面要尽可能水平&#xff09;&#xff0c;不能有夹角产生&#xff08;如A图中的角a&a…

Python学习——数据排序及分箱pd.cut\pd.qcut

文章目录 1 排序1.1 按照索引排序 df.sort_index1.2 按照值进行排序 df.sort_values1.3 数值型数据快速排序 df.nlargest 2 分箱&#xff08;离散化&#xff09;2.1 pd.cut2.1.1 均匀切分,等距分箱2.1.2 指定切分点切分 2.2 pd.qcut 1 排序 dataFrame进行排序时&#xff0c;可…