使用python在html网站上查找视频id

2024-09-29 23:22:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在抓取一个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='qe67234'中可以找到视频的id 我不知道如何访问这个'qe67234'和打印出来

请帮忙谢谢


Tags: 文件divid标题视频htmlwitharticle
2条回答

假设数据id在div

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

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

请注意,通常情况下,视频元素需要JS来播放,如果使用非javascript客户机(即pythonrequests)对其进行刮取,则可能无法找到必需的元素

如果发生这种情况,您必须使用phantomjs + seleniumbrowser之类的工具将网站与javascript结合起来,以执行抓取

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

假设data id的标记以div开头:

from bs4 import BeautifulSoup
import re

soup = BeautifulSoup('<div class="_article" data-id="qe67234"></div>')
results = soup.findAll("div", {"data-id" : re.compile(r".*")})
print('output: ', results[0]['data-id'])

# output: qe67234 

相关问题 更多 >

    热门问题