当前位置: 首页 > news >正文

Python爬取静态网页技术解析

内容导读

  1. 实现HTTP请求
  2. 解析网页
  3. 存储数据
  4. 静态网页爬取实例

一、实现HTTP请求

1、爬虫场景简介

(1)基本功能

爬虫的基本功能是读取URL和爬取网页内容,这就需要爬虫具备能够实现HTTP请求的功能。请求过程主要包括生成HTTP请求、请求头处理、超时设置、请求重试、查看状态码等。

(2)实例介绍

通过Chrome开发者工具直接查看网页“http://www.jd.com”的页面元素、页面源代码和资源详细信息,并分别通过urllib 3库、Requests库实现向网页发送GET类型的HTTP请求,并获取返回的响应。

爬取步骤:

使用Chrome开发者工具查看页面元素、页面源代码和资源详细信息。

使用urllib 3库生成HTTP请求。

使用urllib 3库处理请求头。

使用urllib 3库设置超时时间(timeout)。

使用urllib 3库设置请求重试。

使用Requests库生成HTTP请求。

使用Requests库查看状态码与编码。

使用Requests库处理请求头与响应头。

使用Requests库设置超时时间。

2、使用Chrome开发者工具查看网页

Chrome浏览器提供了一个非常便利的开发者工具,供广大Web开发者使用,该工具提供查看网页元素、查看请求资源列表、调试JavaScript代码等功能。

该工具的打开方式是右击Chrome浏览器页面,在弹出的快捷菜单中单击下图所示的“检查”选项。

也可以单击Chrome浏览器右上角的菜单 ,如下图所示,单击“更多工具”选项中的“开发者工具”选项打开开发者工具,或直接使用“F12”键打开开发者工具,效果如下图:

网站地址:“https://www.jd.com”。

二、解析网页

通过解析网页可以获取网页包含的数据信息,如文本、图片、视频等,这需要爬虫具备定位网页中信息的位置并解析网页内容的功能。

本任务分别通过Xpath、Beautiful Soup库和正则表达式解析通过Requests库获取的网站“https://www.jd.com”的网页内容,即获取其中的元素及相关信息。

1、爬取步骤

使用lxml库的etree模块实现通过Xpath获取网页内容中的标题内容、节点下的文本内容。

使用Beautiful Soup库创建BeautifulSoup对象,将HTML文档转换为文档树。

使用Beautiful Soup库搜索文档树中的文本内容、属性值。

使用正则表达式匹配字符串。

使用正则表达式查找网页中的标题内容。

2、xml路径语言XPath

XML路径语言(XML Path Language,XPath)是一门在XML文档中查找信息的语言。

XPath最初被设计用于搜寻XML文档,但同样适用于HTML文档的搜索。

XPath的选择功能十分强大,它不仅提供了非常简洁明了的路径选择表达式,还提供了超过100个内建函数,用于字符串、数值、时间的匹配,以及节点、序列的处理等,几乎所有定位的节点都可以用XPath来选择。

使用Xpath需要从lxml库中导入etree模块,还需要使用HTML类对需要匹配的HTML对象进行初始化。HTML类的基本语法格式如下。

三、存储数据

爬虫通过解析网页获取页面中的数据后,还需要将获得的数据存储下来以供后续分析。

1、存储过程

使用JSON模块将Xpath获取的文本内容存储为JSON文件。

使用PyMySQL库将Beautiful Soup库获取的标题存储入MySQL数据库。

2、将数据存储为JSON文件

JSON文件的操作在Python中分为解码和编码两种,都通过JSON模块来实现。

其中,编码过程为将Python对象转换为JSON对象的过程,而解码过程则相反,其将JSON对象转换为Python对象。

将数据存储为JSON文件的过程为一个编码过程,编码过程常用到dump函数和dumps函数。

两者的区别在于,dump函数将Python对象转换为JSON对象,并通过fp文件流将JSON对象写入文件内,而dumps函数则生成一个字符串。

dump函数和dumps函数的基本语法格式如下。

json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

dump函数和dumps函数的常用参数及其说明。

3、连接方法

PyMySQL库使用connect函数连接数据库,connect函数的参数为Connection构造函数的参数,基本语法格式如下。

4、数据库操作函数

PyMySQL库中可以使用函数对返回的连接(connect)对象进行操作,常用的连接对象操作函数如表所示。

在通过Python操作数据库的过程中,通常使用pymysql.connect.cursor()方法获取游标,或使用pymysql.cursor.execute()方法对数据库进行操作,如创建数据库和数据表等,使用更多的为增、删、改、查等基本操作。游标对象也提供了很多种方法,常用的方法如表。

5、将数据存储到MySQL数据库

游标对象的创建是基于连接对象的,创建游标对象后即可通过SQL语句对数据库进行增、删、改、查等操作。

在连接的MySQL数据库中创建一个表名为class的表,该表包含id、name、text这3列,使用id列作为主键,之后将Beautiful Soup库获取的标题文本存入该表中。

四、静态网页爬取实例

爬取静态网页的内容,可以使用Python的requests库来获取网页内容,然后使用BeautifulSoup库来解析HTML并提取所需数据,这里以windows系统为例。

1、安装requestsbeautifulsoup4

# 如果已安装可跳过
pip install requests beautifulsoup4
# 或
py  -m  pip  install  requests beautifulsoup4

2、示例代码

# 导入库
import requests
from bs4 import BeautifulSoup# 目标网页URL
url = 'https://www.jd.com'# 发送HTTP请求
response = requests.get(url)# 检查请求是否成功
if response.status_code == 200:# 使用BeautifulSoup解析网页内容soup = BeautifulSoup(response.text, 'html.parser')# 提取你感兴趣的数据,例如所有段落文本paragraphs = soup.find_all('p')for p in paragraphs:print(p.text)
else: # 搜索内容夫败提示print(f'Failed to retrieve page: status code {response.status_code}')

更多精彩内容请关注本站!


http://www.mrgr.cn/news/9619.html

相关文章:

  • 【SpringBoot + Vue 尚庭公寓实战总结】项目初始化准备(二)
  • react 项目配置别名路径@
  • 【Pyhthon读取 PDF文件表格 ,转为 CSV/TSV/JSON文件】
  • 计算机毕业设计选题推荐-高校学术交流平台-Java/Python项目实战
  • 游戏开发中客户端和服务器逻辑
  • docker安装ES(Elasticsearch)的IK分词器
  • C++概观:并发及实用工具(A Tour of C++: Concurrency and Utilities)
  • 使用git clone --filter=tree:0 代替git clone --depth 1 减轻github网站服务器的负载压力
  • mqtt,aflnet实验,环境ubuntu
  • Python策略模式:灵活应对多变的业务逻辑
  • 虚幻5|制作一个木桩,含血量及伤害数字
  • 产品经理如何提升系统思考能力
  • 云服务器配置Yolov5环境,No module named ‘torch‘, No module named ‘numpy
  • 如何使用ssm实现宠物领养系统+vue
  • 第三十四天学习笔记
  • Python3.11二进制AI项目程序打包为苹果Mac App(DMG)-应用程序pyinstaller制作流程(AppleSilicon)
  • 考研系列-数据结构冲刺课复习笔记(上)
  • 无监督3D场景理解,LLM 在 3D 场景理解中的应用与探索 !
  • ssrf漏洞之——漏洞复现
  • 线性数据结构的基本概念(数组,链表,栈,队列)