xpath('//*[@id="video-title"]/text()')
时间: 2024-06-07 13:12:05 浏览: 140
这是一个 Python 中使用 XPath 语法获取 HTML 页面中某个元素的文本内容的示例代码。其中 `//*[@id="video-title"]/text()` 表示获取 `id` 属性为 `"video-title"` 的元素的文本内容。
你需要先使用 Python 中的 `requests` 库获取网页的 HTML 内容,然后使用 `lxml` 库中的 `etree` 模块解析 HTML,并使用 XPath 语法获取特定元素的内容。完整的示例代码如下:
```python
import requests
from lxml import etree
url = "https://www.youtube.com/watch?v=VIDEO_ID"
response = requests.get(url)
html = etree.HTML(response.text)
title = html.xpath('//*[@id="video-title"]/text()')
print(title)
```
其中 `VIDEO_ID` 部分需要替换成你想要获取标题的 YouTube 视频的 ID。
相关问题
import re import requests import parsel # 数据解析模块 def change_title(title): """处理文件名非法字符的方法""" pattern = re.compile(r"[\/\\\:\*\?\"\<\>\|]") # '/ \ : * ? " < > |' new_title = re.sub(pattern, "_", title) # 替换为下划线 return new_title for page in range(13, 33): print('---------------正在爬取第{}页的数据----------------'.format(page)) # 1.确定数据所在的链接地址(url) 逆向分析 网页性质(静态网页/动态网页) url = 'https://www.ximalaya.com/youshengshu/4256765/p{}/'.format(page) headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'} # 2.通过代码发送url地址的请求 response = requests.get(url=url, headers=headers) html_data = response.text # print(html_data) # 3.解析数据(要的, 筛选不要的) 解析音频的 id值 selector = parsel.Selector(html_data) lis = selector.xpath('//div[@class="sound-list _is"]/ul/li') for li in lis: try: title = li.xpath('.//a/@title').get() + '.m4a' href = li.xpath('.//a/@href').get() # print(title, href) m4a_id = href.split('/')[-1] # print(href, m4a_id) # 发送指定id值json数据请求(src) json_url = 'https://www.ximalaya.com/revision/play/v1/audio?id={}&ptype=1'.format(m4a_id) json_data = requests.get(url=json_url, headers=headers).json() # print(json_data) # 提取音频地址 m4a_url = json_data['data']['src'] # print(m4a_url) # 请求音频数据 m4a_data = requests.get(url=m4a_url, headers=headers).content new_title = change_title(title) # print(new_title) # 4.数据持久化(保存) with open('video\\' + new_title, mode='wb') as f: f.write(m4a_data) print('保存完成:', title) except: pass
这段代码是一个简单的爬虫程序,用于爬取喜马拉雅网站上的有声书数据,并将音频文件保存到本地。具体来说,程序的实现步骤如下:
1. 确定需要爬取数据的链接地址,并使用 requests 库发送 GET 请求获取页面 HTML 数据。
2. 使用 parsel 库解析 HTML 数据,获取音频文件的标题和链接地址。
3. 通过解析的链接地址发送 GET 请求获取音频文件的 JSON 数据,提取音频文件的下载地址。
4. 使用 requests 库发送 GET 请求获取音频文件数据,并将数据保存到本地指定的文件夹和文件名中。
其中,`change_title` 函数用于将文件名中的非法字符替换为下划线,避免文件名中含有无法识别的字符导致文件保存失败。在循环中,通过 `for page in range(13, 33)` 语句遍历需要爬取的页面,然后依次爬取每个页面上的音频文件数据。
需要注意的是,该程序仅供学习和研究使用,未经授权不得用于商业用途。同时,爬取网站数据也需要遵守相关法律法规,不得侵犯他人的知识产权和隐私权。
阅读全文