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”。

Python爬取静态网页技术解析_第1张图片

二、解析网页

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

本任务分别通过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类的基本语法格式如下。

Python爬取静态网页技术解析_第2张图片

三、存储数据

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

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函数的常用参数及其说明。

Python爬取静态网页技术解析_第3张图片

3、连接方法

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

Python爬取静态网页技术解析_第4张图片

4、数据库操作函数

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

Python爬取静态网页技术解析_第5张图片

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

Python爬取静态网页技术解析_第6张图片

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}')

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

你可能感兴趣的:(网络安全与管理,web前端技术,毕业设计与项目实战,python,django,pandas,numpy,网络爬虫,pycharm,网络安全)