IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 爬虫摸索中~~(PS:小小爬虫,何惧哉?且到明日,再看今朝。) -> 正文阅读

[Python知识库]爬虫摸索中~~(PS:小小爬虫,何惧哉?且到明日,再看今朝。)

搭建环境

??在操作系统中安装好Python,这里采用的是Python 3.9.9;选择VS Code作为开发工具,安装Python插件,方便代码编辑和调试。

安装爬虫库

??初入爬虫世界,先要了解下今天用的常规工具库——RequestsBeautifulSoup
??Requests主要作用是请求网站获取网页数据,BeautifulSoup则可以轻松解析Requests库获得的网页信息,并把网页源代码解析为Soup文档,便于过滤提取数据。这里简单介绍一种安装方法如下,其它方法请大家自行搜索。

pip install requests
pip install bs4

爬虫测试

获取网页整体信息

1.访问目标网页

??使用Chromium内核的新版Edge浏览器打开任意网页,下图为网页网页,是一篇文章。


在这里插入图片描述


2.引入Requests库获取请求响应

??这里,我们新建一个python文件,引入Requests库,通过requests.get()以GET方式发送请求,获取响应信息。

import requests
res = requests.get("https://*.*.*")
print(res)
print(res.text)

??通过print()函数将响应结果的HTTP状态码响应消息内容输出后,结果如下。可以看出,数据结构不清晰,不利于我们分析数据,因此,需要对数据进行处理,方便查找分析。
在这里插入图片描述

3.引入BeautifulSoup库格式化处理响应数据

??我们在原有代码的基础上,添加BeautifulSoup相关代码,对Requests库获得的响应信息进行处理,将数据格式化,形成一个具有内在结构的 BeautifulSoup对象。

import requests
from bs4 import BeautifulSoup
res = requests.get("https://*.*.*")
soup = BeautifulSoup(res.text, 'html.parser')
print(soup.prettify())

??通过prettify()方法可以将Beautiful Soup文档树格式化,以Unicode编码输出,每个XML/HTML标签都独占一行,结果如下图所示,格式清晰,可视化效果好,方便分析。
在这里插入图片描述

获取网页中特定信息

??对于一个网页来说,我们感兴趣的往往是一部分特定信息,因此,可以利用Beautiful Soup的选择功能筛选出感兴趣的内容,予以爬取。下面我们来看看怎么去做。

1.找到目标HTML标签

??在网页上右键选择检查,可以打开网页调试工具,如下图所示。
在这里插入图片描述
??点击调试工具左上角的按钮(如下图所示)后,再点击左边网页中的某个目标元素,在右边调试部分便会高亮显示当前元素的标签信息。
在这里插入图片描述

2.获取目标网页定位

??以刚才打开的网页为例,这篇文章有很多标题,假设我们想要获取这些一级标题信息,该怎么办呢?我们可能发现,页面结构比较复杂,通过上一步操作无法获得目标的完整标签路径,也就是无法得到目标的准确位置,进而无法通过代码定位选择出我们需要的信息。这时,该怎么办呢?其实很简单,我们选中感兴趣的某个标题,比如Unicode编码这行,在调试器中看到这个元素的标签信息,如下图所示。
在这里插入图片描述
??此时,在该部分信息上点击右键->复制->复制Selector,可以获得目标网页定位#Unicode\%E7\%BC\%96\%E7\%A0\%81。于是,我们在代码响应信息处理部分加入以下代码,成功得到Unicode编码这行文章信息。

titles=soup.select('#Unicode\%E7\%BC\%96\%E7\%A0\%81')
print(titles)
[<h1 id="Unicode%E7%BC%96%E7%A0%81" name="Unicode%E7%BC%96%E7%A0%81">Unicode编码</h1>]

??可是,利用这个标签,我们无法获得其他一级标题信息,因为在HTML中#ID信息是唯一的,就像我们利用一个人的身份证没法找到另一个人一样。因此,这里我们不能使用#开头的元素ID信息。分析一级标题的标签信息,可以知道,该元素有idname,但两者都有可能是网页唯一的,不是一级标题的共同特点,因此,我们在调试器中将该元素的两个属性idname删除,使元素变成<h1>Unicode编码</h1>,此时采用之前的方法,在该部分信息上点击右键->复制->复制Selector,便可获得新的目标网页定位信息。

#react-root > div:nth-child(1) > div.J-body.col-body.pg-2-article > div.com-3-layout > div.layout-main > section.com-2-panel.col-2-article.J-articlePanel > div.com-markdown-collpase > div.com-markdown-collpase-main > div.rno-markdown.J-articleContent > h1:nth-child(8)

??其中,定位信息最后的h1:nth-child(8) 表示的是满足当前选择器条件的第8个<h1>元素。所以,我们推测,其他一级标题应该也是类似<h1>元素,因此,把nth-child(8)去掉应该就是我们要获取的一级标题的共同路径。

3.爬取指定数据信息

??获得一级标题共同路径信息后,将信息遍历输出,便可得到我们想要的数据信息,代码如下。

titles=soup.select("#react-root > div:nth-child(1) > div.J-body.col-body.pg-2-article > div.com-3-layout > div.layout-main > section.com-2-panel.col-2-article.J-articlePanel > div.com-markdown-collpase > div.com-markdown-collpase-main > div.rno-markdown.J-articleContent > h1")
for title in titles:
    print(title.get_text())

??titles参数存储有相关元素的标签信息,通过get_text()便可提取出该元素的文本信息,也就是最终我们感兴趣的所有一级标题信息。至此,我们便完成了爬虫第一步,虽然我们爬得很晚很慢,但我们依然有颗征服山顶的心。 加油,共勉!

概述
Unicode编码
UTF-8
UTF-16
JavaScript中的string与DOMString
总结
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:24:11  更:2021-12-04 13:24:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:18:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码