Xpath定位这段代码无法获取到电影的标题

做练习,Xpath定位这段代码无法获取到电影的标题

import requests
from lxml import etree
import csv
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'}
url = 'https://www.bilibili.com/video/BV1Ps4y1f7KH'
data = requests.get(url, headers=headers).text
# 拿到网页源码
# print(data)
ele = etree.HTML(data)
div = ele.xpath('//div[@class="mediainfo_mediaInfo__Cpow4"]')
# print(div)
lst = []
for move in div:
    dic = {}
    # 电影名
    name = move.xpath('./a/@title')  
    print(name)

你的xpath写错了呗,修改为:div = ele.xpath('//div[@class="mediainfo_media_right__UOOx_"]')
运行结果:

img

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/862249
  • 这篇博客也不错, 你可以看下xpath无法获取某些标签问题
  • 除此之外, 这篇博客: 小白教程:通过浏览器简单获取Xpath,安装插件校验Xpath规则中的 一. 获取xpath 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • ①这里用吾爱破解为例,比如我想抓取这个人气热门(更多)部分的内容
    那么需要做的就是右键点击它,然后选择检查;
    可以看到,页面下方出现了一个工具栏,它就是chrome浏览器的开发者工具,默认显示的是Elements这个标签页
    还可以看到,有一块已经被变成蓝色,这个就是你选中的部分对应的html代码

    ②接下来,你需要做的就是在这块蓝色的代码区域右键,选择Copy,选择Copy XPath

    然后ctrl+v粘贴出来的就是xpath规则

    比如我复制的

    //*[@id="category_"]/table/tbody/tr[2]/td[3]/div/div[1]/a

    简单解释下含义:在id为category_的一个任意标签下的table中的tbody下的第二个tr中的第三个td下的div中的第一个div中的a标签

    简单的xpath校验方式

    简单说下

    打开调试栏,也就是按下F12或者右键检查,再按下ctrl+f

    会出现如图搜索框,在框中输入你复制到的xpath规则

    可以看到这部分代码高亮显示了。

     

    当然了,我习惯用插件简单查验一下,比这个直观,而且方便一些。

    说到这里我简单说下这个插件的安装使用

  • 您还可以看一下 CSDN就业班老师的第一章:数据提取与清洗策略课程中的 百度针对xpath爬虫的反爬策略与解决方式小节, 巩固相关知识点