第1关:XPath解析网页

本文介绍了XPath的基础知识,包括其在XML和HTML文档中的应用,以及如何使用XPath在古诗词网的网页源码中查找并提取古诗词作者信息。通过实例展示了如何编写Python代码利用lxml和urllib库进行网页抓取和XPath选择器的运用。
摘要由CSDN通过智能技术生成

任务描述

本关任务:在 XPath 基础实训中,介绍了 XPath 的基础知识,本关需要使用 XPath 技术来编写解析网页的程序。

相关知识

为了完成本关任务,你需要掌握 XPath 的使用。

XPath概念

XPath ,全称 XML Path Language ,即 XML 路径语言,它是一门在 XML 文档中查找信息的语言。最初是用来搜寻 XML 文档的,但同样适用于 HTML 文档的搜索。所以在做爬虫时,完全可以使用 XPath 做相应的信息抽取。 XPath 的选择功能十分强大,它提供了非常简洁明了的路径选择表达式。另外,它还提供了超过 100 个内建函数,用于字符串、数值、时间的匹配以及节点、序列的处理等,几乎所有想要定位的节点都可以用 XPath 来选择。

使用 XPath 解析爬取网页

现在演示使用 XPath 解析爬取网页,在古诗词网批量爬取古诗词的标题。

网页部分内容如下所示:

在爬取的网页界面,按 F12 可查看网页源码。网页部分源码如下所示:

从网页源码可以看出,古诗标题在 class 属性为 left 的 div 元素下的 ul 元素下的所有 li 元素下的 strong 元素下的文本信息中,所以 XPath 路径表达式为://div[@class='left']/ul/li/strong/text()

有了上述信息,就可以进行代码编写,实际代码如下所示:

  1. # 导入urllib与lxml库
  2. import urllib.request
  3. from lxml import etree
  4. # 爬取网页的网址,此网址仅限于本实训使用
  5. url = 'http://127.0.0.1:8080/'
  6. # 请求网页获取网页源码
  7. response=urllib.request.urlopen(url=url)
  8. html=response.read().decode("utf-8")
  9. # 将文本转化为HTML元素树
  10. parse = etree.HTML(html)
  11. # 写入xpath路径
  12. item_list = parse.xpath("//div[@class='left']/ul/li/strong/a/text()")
  13. print(item_list)

编程要求

根据提示以及示例,在右侧编辑器 Begin-End 区间补充代码,完善函数 get_data(),批量爬取古诗词作者。src/step1/test.html 为爬取网页的效果代码,可以使用开发者工具审查元素,获取 XPath 的路径信息。

测试说明

平台会对你编写的代码进行测试,当评测出现 Django 启动失败时,重新评测即可

代码: 

import urllib.request
 
from lxml import etree
 
def get_data(url):
    '''
    :param url: 请求地址
    :return: None
    '''
    response=urllib.request.urlopen(url=url)
    html=response.read().decode("utf-8")
    # *************** Begin *************** #
    parse = etree.HTML(html)  
    # 写入xpath路径  
    item_list = parse.xpath("//div[@class='left']/ul/li/span/a/text()")   
    #item_list = parse.xpath("/html/body/div[2]/div[1]/ul/li/span/a.text()")   
    # *************** End ***************** #
 
    print(item_list)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jerry&

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

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

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

打赏作者

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

抵扣说明:

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

余额充值