【零基础入门Python爬虫】第二节 Python 爬虫解析 Xpath、JsonPath 和 BeautifulSoup

网络爬虫是一种自动化程序,用于从互联网上获取信息。在网络爬虫中,数据的解析是一个非常重要的环节。Python 是一门流行的编程语言,具有优秀的网络爬虫库,如 Scrapy、BeautifulSoup、Requests 等。本文将着重介绍 Python 中的三种解析技术:Xpath、JsonPath 和 BeautifulSoup。


一、Xpath

XPath 是一种类 XML 的语言,可以用来选择 XML 或 HTML 文档中的节点。在 Python 编程中,我们可以使用 lxml 库来解析 HTML 或 XML 文件,并使用 XPath 语法选择需要的节点。

1.安装

  • 使用 pip 安装:
pip install lxml

2.解析 HTML

我们可以使用 html.etree.ElementTree 模块中的 HTML 方法加载 HTML 文件,然后使用 xpath() 方法获取需要的节点。

from lxml import etree

html = '''
<!DOCTYPE html>
<html>
  <head>
    <title>Test</title>
  </head>
  <body>
    <ul>
      <li><a href="http://www.baidu.com">Google</a></li>
      <li><a href="http://www.qq.com">Yahoo</a></li>
    </ul>
  </body>
</html>
'''

tree = etree.HTML(html)
links = tree.xpath('//ul/li/a')

for link in links:
    print(link.attrib['href'])

输出结果:

http://www.baidu.com
http://www.qq.com

3.解析 XML

如果需要解析 XML 文件,我们可以使用 etree.parse() 方法加载 XML 文件,然后使用 xpath() 方法选择需要的节点。

from lxml import etree

xml = '''
<bookstore>
  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
</bookstore>
'''

tree = etree.fromstring(xml)
books = tree.xpath('//book')

for book in books:
    print(book.xpath('./title/text()')[0], book.xpath('./price/text()')[0])

输出结果:

Everyday Italian 30.00
Harry Potter 29.99

二、JsonPath

JsonPath 是一种用于在 JSON 对象中定位元素的语言。与 XPath 类似,JsonPath 提供了一些简单的表达式来选择 JSON 对象中的元素。Python 中可以使用 jsonpath_rw 库来实现 JsonPath 的解析。

1.安装

  • 使用 pip 安装:
pip install jsonpath-rw

2.解析 JSON

我们可以使用 json.loads() 方法将 JSON 字符串转换为 Python 对象,然后使用 jsonpath_rw.parse() 方法构造 JsonPath 表达式,并使用 find() 方法获取需要的元素。

import json
from jsonpath_rw import parse

json_str = '''
{
  "store": {
    "book": [
      {
        "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      {
        "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}
'''

data = json.loads(json_str)
books = parse('$.store.book[*]').find(data)

for book in books:
    print(book.value['title'], book.value['price'])

输出结果:

Sayings of the Century 8.95
Sword of Honour 12.99

 

三、BeautifulSoup

BeautifulSoup 是 Python 中的一个 HTML/XML 解析库,可以从 HTML 或 XML 中提取信息。它可以自动将不规范的 HTML 或 XML 文件转换为规范化的树形结构,并提供了一些简单的方法来查询和修改这个树形结构。

1.安装

  • 使用 pip 安装:
pip install beautifulsoup4

2.解析 HTML

我们可以使用 bs4 模块中的 BeautifulSoup 类来解析 HTML 文件,然后使用 select() 方法获取需要的节点。

from bs4 import BeautifulSoup

html = '''
<!DOCTYPE html>
<html>
  <head>
    <title>Test</title>
  </head>
  <body>
    <ul>
      <li><a href="http://www.baidu.com">Google</a></li>
      <li><a href="http://www.qq.com">Yahoo</a></li>
    </ul>
  </body>
</html>
'''

soup = BeautifulSoup(html, 'html.parser')
links = soup.select('ul li a')

for link in links:
    print(link['href'])

输出结果:

http://www.baidu.com
http://www.qq.com

3.解析 XML

如果需要解析 XML 文件,我们可以使用 lxml 库来解析 XML 文件,并将解析结果传递给 BeautifulSoup 类。

from lxml import etree
from bs4 import BeautifulSoup

xml = '''
<bookstore>
  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
</bookstore>
'''

tree = etree.fromstring(xml)
soup = BeautifulSoup(etree.tostring(tree), 'xml')
books = soup.select('book')

for book in books:
    print(book.select_one('title').text, book.select_one('price').text)

 输出结果:

Everyday Italian 30.00
Harry Potter 29.99

总结

本文介绍了 Python 中三种常用的解析技术:Xpath、JsonPath 和 BeautifulSoup。使用这些技术,我们可以方便地从 HTML、XML 或 JSON 文件中提取所需的信息。在实际开发中,我们可以根据具体情况选择适合自己的解析技术,并根据需求灵活运用各种工具和技术来提高数据解析效率。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
零基础Python爬虫、数据分析与可视化从入门到精通》是一本帮助零基础学习Python爬虫、数据分析与可视化的书籍。通过阅读该书并实践书中的案例,读者可以从入门到精通地掌握这些技术。 首先,书籍的第一部分主要介绍了Python的基础知识。包括Python的安装、基本语法、数据类型、条件语句、循环结构、函数、模块等内容。通过学习这些基础知识,读者可以对Python有一个全面的了解,并为后续的爬虫、数据分析与可视化打下坚实的基础。 接下来,书籍的第二部分开始介绍爬虫的相关知识。包括HTTP协议、正则表达式、XPathBeautifulSoup、Scrapy等内容。通过学习这些知识,读者可以了解爬虫的基本原理,并学会使用相关工具进行网页数据的抓取和解析。 然后,书籍的第三部分介绍了数据分析的相关知识。包括数据清洗、数据处理、数据可视化等内容。通过学习这些知识,读者可以了解如何处理和分析不同类型的数据,并使用常用的数据分析工具进行数据可视化。 最后,书籍的第四部分综合运用前面学习到的知识,通过实例项目来提高读者的实战能力。例如,通过爬取网站上的数据,然后进行数据分析和可视化展示。 综上所述,《零基础Python爬虫、数据分析与可视化从入门到精通》这本书通过详细的讲解和实例项目,帮助读者从零开始学习Python爬虫、数据分析与可视化,并最终达到精通的水平。对于想要学习这些技术的读者来说,这是一本很好的入门指南。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宝爷~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值