python - 使用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' 并将其打印出来。
请帮忙谢谢!
解决方案
假设 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
值来查找您需要的元素
推荐阅读
- java - Android布局资源ID别名
- javascript - 如何在电子 JS 文件中导入另一个 JS 文件(位于同一目录中)
- io - 操作系统是否挂起在 IO 上阻塞的线程
- python-3.x - 熊猫:将每个值与列名匹配并创建另一列
- python - 在python中将png图像与带有alpha通道的视频结合起来
- python - 放入和进入队列的不同对象
- azure - 在 azure 自动化上执行 Invoke-AzureRmVMRunCommand 的问题
- javascript - 如何在 html 中单击(或激活)幻灯片时将背景图像添加到幻灯片中的导航项目符号
- c++ - 使用记事本 C++ 打开 txt 文件时不等待
- html - 与选择元素分离的 Mat-Select 下拉列表