Python网页信息获取与解析:使用requests库爬取HTML数据的大数据时代应用
>>> from env_helper [id_1054633183] info; info()

页面更新时间: 2024-01-20 22:01:19
运行环境:
Linux 有一个发行版本叫做 Debian GNU/Linux 12 ,其版本名称为 bookworm 。
操作系统的内核是 Linux-6.1.0-17-amd64-x86_64-with-glibc2.36
Python版本: 3.11.2
5.4. 网页信息获取与解析
大数据的时代,信息几乎覆盖了社会体系中的所有行业。大数据是在一定时间范围内,用常规软件工具进行捕捉、管理和处理的数据集合。它需要新的处理模式,才能具有更强的决策力、洞察发现力和流程优化能力,是海量、高增长率和多样化的信息资产。对网页信息进行处理已成为大势所趋。
前面我们已经对 html 的基本组成有所了解了。现在,我们要使用 Python 来读取一个 HTML 的具体信息。Python 拥有许多用于处理网页的库,这些库各自的功能都十分强大。下面简单介绍一下处理网页的库。
5.4.1. 安装requests
先将第三方库安装好,然后找一个感兴趣的网页进行测试。
通过requests库爬取html页面的内容。
安装 requests 可以使用pip安装
pip install requests
在 Debian / Ubutnu 中使用
sudo apt install -y python3-requests
完成后测试:
>>> import requests
5.4.2. requests主要方法
requests.get()
使用 requests 库发送 GET 请求,指定了 URL 和参数 params 等其他关键字参数 **kwargs 。
向“”对应的服务器发送相应的 get 请求,以此来获得对应的内容。
>>> url=“https://www.osgeo.cn/”这个网址。 >>> html = requests.get(url, timeout=10000) >>> demo = html.text
>>> html.status_code
200
html是请求返回的一个响应对象。主要的属性有五个分别是:
request.head()
返回响应头信息。
>>> requests.head(url).headers
{'Server': 'nginx/1.18.0', 'Date': Sat 是星期六的意思,20 表示 20 号,Jan 是一月的英文缩写,2024 是年份,14:01:31 是具体的时间点,GMT 表示格林威治标准时间。所以这句话可以改写为:星期六,2024 年 1 月 20 日 14 时 01 分 31 秒,格林威治标准时间。, 'Content-Type': 这是一个以 "text/html; charset=UTF-8" 形式呈现的内容,其中 "text/html" 表示文本的格式为 HTML,"charset=UTF-8" 则指定了字符编码为 UTF-8。, 'Content-Length': '87', 'Connection': 'keep-alive'}
requests.post()
你也许时常想要为 URL 的查询字符串传递某种数据,这是可以做到的。如果是手工构建 URL,数据会以键/值对的形式置于 URL 中,并且跟在一个问号之后。例如,httpbin.org/get?key=val
>>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.post("http://httpbin.org/post", data=payload) >>> r.text
该请求的参数为空对象,数据为空字符串,文件为空对象,表单包含两个键值对,其中键“key1”对应值“value1”,键“key2”对应值“value2”,请求头中的“Accept”字段值为……/"url" 的值为http://httpbin.org/post"n}n'
二进制响应内容
Requests 能够自动把返回的值解析成二进制形式的内容,能够被用来下载图片以及视频资源。
>>> r.content
n "headers" 中 "Accept" 的值为 。/", n "Accept-Encoding": "gzip, deflate, br", n "Content-Length": "23", n "Content-Type": "application/x-www-form-urlencoded", n "Host": "httpbin.org", n "User-Agent": "python-requests/2.28.1", n "X-Amzn-Trace-Id": "Root=1-65abd23d-19403c074bfb7cf32f0f1b5c"n }, n "json": null, n "origin": "47.93.236.110", n "url": "http://httpbin.org/post"n}n'
JSON 响应内容
Requests 中存在一个内置的 JSON 解码器,它能够帮助你对 JSON 数据进行处理。
>>> r.json()
{'args': {},
'data': '',
'files': {},
'form' 包含着 'key1' 以及其对应的值 'value1' ,同时还包含着 'key2' 以及其对应的值 'value2' 。
'headers': {'Accept': '/',
'Accept-Encoding' 包含 'gzip'、'deflate' 和 'br' 这些编码方式。
'Content-Length': '23',
Content-Type 为 application/x-www-form-urlencoded 。
'Host': 'httpbin.org',
'User-Agent' 为 'python-requests/2.28.1'
“X-Amzn-Trace-Id”的值为“Root=1-65abd23d-19403c074bfb7cf32f0f1b5c”。
'json': None,
'origin': '47.93.236.110',
'url': 'http://httpbin.org/post'}
原始响应内容
在特殊的情形下,你或许希望获取源自服务器的原始套接字响应,此时你能够访问 r.raw。倘若你确实有这样的想法,那么请务必在初始请求中设定 stream=True。具体的做法如下:
>>> r = requests.get(“https://api.github.com/events”这个地址用于获取相关事件的信息。它是一个特定的网络链接,指向 GitHub 平台上的事件相关资源。通过访问这个链接,可以获取到关于各种事件的详细数据。, stream=True) >>> r.raw
<urllib3.response.HTTPResponse at 0x7fa5a41d7a60>
>>> r.raw.read(10)
b'x1fx8bx08x00x00x00x00x00x00x03' 是一个特定的编码或标识,其具体含义可能因上下文而异。目前仅从这串字符本身难以确切理解其具体所指或用途。它可能在特定的系统、程序或领域中有特定的意义和作用,但仅从这一字符序列无法直接得知其详细信息。
Python抓取HTML表格数据:使用Requests和Beautiful Soup快速解析与提取
如何使用Python抓取网页文字:从HTML基础到requests库的全面指南
Python爬虫教程:解析requests.get()响应对象与BeautifulSoup提取HTML内容
Python网页数据抓取教程:使用requests和BeautifulSoup快速上手
深入理解并发Queue:ConcurrentLinkedQueue与BlockingQueue的性能与应用场景
Python接口自动化实战:使用Request、Unittest和DDT实现数据驱动测试