首页> 资讯 > 详情

世界微资讯!Python实战使用XPath采集数据示例解析

2023-07-04 11:17:42来源:脚本之家
目录
lxml发送请求明确需求:解析数据保存数据

lxml

lxml 是 Python 的一个库,用于解析和呈现 XML 和 HTML。它支持多种内置和第三方 XML 和 HTML 标记,例如

    1. 等。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 文档中的ulli元素,并将它们存储在lis变量中。

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

      保存数据

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

      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_writerDictWriter对象,并使用writeheader()方法来写入表头。

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

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

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

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

      """

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

标签:

上一篇:内房股集体回落 机构称市场热度持续降温 或继续演绎分化行情-世界快资讯
下一篇:最后一页