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

时间:2018-07-03 03:55:33

标签: python parsing web-scraping beautifulsoup python-requests

我正在抓取一个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”并打印出来。

请帮助谢谢!

2 个答案:

答案 0 :(得分:0)

假设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 

答案 1 :(得分:0)

假设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值查找所需的元素