首页 > 解决方案 > 使用python在html网站上查找视频ID

问题描述

我正在抓取一个 html 文件,每个页面上都有一个视频,并且在 html 中有视频 id。我想打印出视频ID。

我知道如果我想从 div 类中打印标题,我会这样做

with open('yeehaw.html') as html_file:
   soup = BeautifulSoup(html_file, 'lxml')

article = soup.find('div', class_='article')
headline = article.h2.a.text
print headline

然而,视频的 ID 在 data-id='qe67234' 中找到,我不知道如何访问这个 'qe67234' 并将其打印出来。

请帮忙谢谢!

标签: pythonparsingweb-scrapingbeautifulsouppython-requests

解决方案


假设 data-id 在 div

BeautifulSoup.find 将找到的 html 元素作为字典返回给您。因此,您可以使用标准方式导航它以访问文本(就像您在问题中所做的那样)以及 html 标签(如下面的代码所示)

soup = BeautifulSoup('<div class="_article" data-id="qe67234">')
soup.find("div", {"class":"_article"})['data-id']

请注意,视频元素通常需要 JS 才能播放,如果使用非 JavaScript 客户端(即 python)抓取,您可能无法找到必要的元素requests

如果发生这种情况,您必须使用phantomjs + selenium浏览器等工具将网站与 javascript 结合起来执行抓取。

编辑 如果data-id标签本身不是常量,您应该查看lxml库以替换BeautifulSoup并使用xpath值来查找您需要的元素


推荐阅读