Python实战使用XPath采集数据示例解析

 更新时间:2023年04月18日 11:13:00   作者:极客飞虎  
这篇文章主要为大家介绍了Python实战之使用XPath采集数据实现示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>

lxml

lxml 是 Python 的一个库,用于解析和呈现 XML 和 HTML。它支持多种内置和第三方 XML 和 HTML 标记,例如 <a><img><form><ul><li><ol><dl><dt><dd> 等。lxml 还支持使用正则表达式来解析和呈现 XML 和 HTML。

本文我们就介绍lxml的使用方法,我们使用lxml获取我们想要的数据。

发送请求

首先,我们要进行数据来源分析,知道我们的需求是什么?

明确需求:

  • 明确采集网站是什么?
  • 明确采集数据是什么?

我们都玩过4399小游戏,我们想获取游戏名称和游戏链接,并保存下来。首先,我们导入相关的库文件。

import csv
import requests
from lxml import etree

接下来,我们可以发送请求,获取网页源代码,代码如下。

url = 'https://www.4399.com/flash_fl/2_1.htm'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
res = requests.get(url, headers=headers)
res.encoding = res.apparent_encoding

这段代码是一个 Python 的 requests 模块的示例代码,用于从 https://www.4399.com/flash_fl/2_1.htm 这个网站上获取数据并将其转换为 HTML 格式。

首先,我们定义了一个 url 变量,它包含了要从网站上获取数据的 URL。然后,我们使用 headers 字典来设置请求头,包括 user-agent 头部,用于指定浏览器的 User-Agent 信息。

接下来,我们使用 requests.get() 函数来发送一个 HTTP GET 请求,并将 headers 字典作为请求头传递给它。这个函数会返回一个 Response 对象,我们可以使用 res.encoding 属性来获取请求的编码方式,并将其设置为 res.apparent_encoding,以便在输出 HTML 时使用相同的编码方式。

最后,我们将请求的编码方式设置为浏览器的默认编码方式,以便在输出 HTML 时使用相同的编码方式。

解析数据

接下来,我们用xpath解析数据。我们用开发者工具定位到标签位置。

html_data = etree.HTML(res.text)
lis = html_data.xpath('//*[@class="bre m15"]//ul/li')
for li in lis:
    href = li.xpath('./a/@href')[0]
    title = li.xpath('./a/img/@alt')[0]

接下来,我们使用 html_data.xpath 方法来解析 HTML 文档中的 ul 和 li 元素,并将它们存储在 lis 变量中。

最后,我们使用 for 循环遍历 lis,并使用 li.xpath 方法来获取每个 li 元素的 a 元素的 href 和 alt 属性,并将它们存储在 href 和 title 变量中。 我们运行结果之后,我们还要对链接进行拼接。

保存数据

接下来就是保存数据,先写入头文件。

f = open('4399小游戏.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['游戏名称', '游戏网站'])
csv_writer.writeheader()

这段代码中,我们首先使用 Python 的 open() 函数打开了一个名为 "4399小游戏.csv" 的文件,文件模式为 a,表示追加模式。

然后,我们使用 Python 的 csv 模块创建了一个名为 csv_writer 的 DictWriter 对象,并使用 writeheader() 方法来写入表头。

最后,我们使用 write() 方法向文件中写入数据,数据内容为一个字典对象。

这段代码的作用是将一个字典对象写入到文件中,其中包含了游戏名称和游戏网站两个字段的数据。

需要注意的是,在写入数据之前,我们需要使用 csv.DictWriter() 函数来创建一个 DictWriter 对象,并使用 fieldnames 参数来指定字段名称。此外,我们还需要使用 newline='' 参数来避免在 Windows 系统中出现换行符问题。 '''

dit = {
    '游戏名称': title,
    '游戏网站': data_url,
}
csv_writer.writerow(dit)

'''

以上就是Python实战使用XPath采集数据示例解析的详细内容,更多关于Python XPath采集数据的资料请关注脚本之家其它相关文章!

相关文章

  • python实现人机五子棋

    python实现人机五子棋

    这篇文章主要为大家详细介绍了python实现人机五子棋,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Django 请求Request的具体使用方法

    Django 请求Request的具体使用方法

    这篇文章主要介绍了Django 请求Request的具体使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • python 3.7.0 下pillow安装方法

    python 3.7.0 下pillow安装方法

    这篇文章主要为大家详细介绍了python 3.7.0 下pillow的安装方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • python脚本当作Linux中的服务启动实现方法

    python脚本当作Linux中的服务启动实现方法

    今天小编就为大家分享一篇python脚本当作Linux中的服务启动实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python全面解析json数据并保存为csv文件

    Python全面解析json数据并保存为csv文件

    这篇文章主要介绍了Python全面解析json数据并保存为csv文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Python中性能分析利器pyinstrument详细讲解

    Python中性能分析利器pyinstrument详细讲解

    大家好,本篇文章主要讲的是Python中性能分析利器pyinstrument详细讲解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • Python内置数据结构与操作符的练习题集锦

    Python内置数据结构与操作符的练习题集锦

    Python的一些算法题目经常能够帮助我们巩固对一些常用方法的记忆,这里我们整理了一份Python内置数据结构与操作符的练习题集锦,需要的朋友可以参考下
    2016-07-07
  • 浅谈Python小波分析库Pywavelets的一点使用心得

    浅谈Python小波分析库Pywavelets的一点使用心得

    这篇文章主要介绍了浅谈Python小波分析库Pywavelets的一点使用心得,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python中wordcloud安装的方法小结

    python中wordcloud安装的方法小结

    这篇文章主要介绍了安装python中wordcloud的几种方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Python 几行代码即可实现人脸识别

    Python 几行代码即可实现人脸识别

    Python中实现人脸识别功能有多种方法,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的,本文给大家分享使用Python实现简单的人脸识别功能的操作步骤,感兴趣的朋友一起看看吧
    2022-02-02

最新评论