task3 XPath

XPath是一种解析HTML的语言,广泛应用于各种编程语言中。除了XPath,还有BeautifulSoup和lxml等选择。XPath语法包括层级(如/、//和.)、属性访问(@)以及函数,如contains()和text()。在浏览器中可以使用XPath进行网页元素定位,但在实际操作中要注意空格和换行符的处理,例如normalize-space()函数的应用问题。

XPath

什么是XPath

1、解析HTML的语言
2、几乎所有语言都能使用
3、不是唯一手段,还有BeautifulSoup、lxml等

XPath语法

XPath语法其实只有3大类

层级

/ 直接子集,从根节点中选取
// 跳级,从匹配的当前节点选择文档中的节点,而不考虑他们的位置
.选取当前节点
…选取当前节点的父节点

属性

@进行属性访问

函数

contains()用于检测包含
text()文本节点,通过text来提取

能复制就复制呗,手打其实也ok,不过还是复制之后改一下比较方便啦
不过还是要懂里面的路径之类的,找到里面的路径就可以开心地爬取了

使用XPath

在浏览器中使用XPath

作业1

import requests
from lxml import etree
import lxml
import re
from bs4 import BeautifulSoup

url="https://movie.douban.com/cinema/nowplaying/hangzhou/"
resp =requests.get(url)
html =resp.text
res=etree.HTML(html)
#提取正在上映的电影名
res.xpath("""//*[@id="nowplaying"]/div[2]/ul/li/ul/li[2]/a/text()""")
#提取即将上映的电影名
res.xpath("""//*[@id="upcoming"]/div[2]/ul/li/ul/li[2]/a/text()""")
#两者一起提取
res.xpath("""//ul/li[2]/a/text()""")

在这里有一个疑惑,就是空格和换行符的去除
之前接触到的去除空格是rstrip,尝试之后得出一个错误提示,也就是列表不能够使用,在百度以后,尝试了normalize-space,输出结果只显示了第一个“阿拉丁”。这个问题尚待解决。
输出结果1
在这里插入图片描述
输出结果2
在这里插入图片描述

作业2

import requests
from lxml import etree
import lxml

url="https://www.bilibili.com/ranking/all/0/0/1"
resp=requests.get(url)
html=resp.text

res=etree.HTML(html)
type(res)
res.xpath("""//*[@id="app"]/div[2]/div/div[1]/div[2]/div[3]/ul/li/div[2]/div[2]/a/text()""")

结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值