从bs4.element.Tag的img标签提取文本

时间:2019-09-22 16:39:32

标签: python html image beautifulsoup tags

我有以下问题要问。

我有一个bs4.element.Tags列表,例如此图像的列表

list of tags

如您所见,有很多元素带有标签“ a href =“ / title / ...”>。但是,我不想保留所有元素。我只想要那些后面跟着<img>标签。如何实现?

其次,当我仅保留那些元素

keep elements with <img> tag

我只想将单词保留在标题标签中。例如,在下面的图片中,将“ img title =“ Gravity”保留为仅重力一词。

text to keep

HTML DOCS的链接: HTML Documents for each movie

代码

from tqdm import tqdm
with open('requests_list_dummy.pkl', 'rb') as f:
    requests_list_dummy = pickle.load(f)

souplist = []

for i in tqdm(requests_list_dummy):
    souplist.append(BeautifulSoup(i.text))

souplist_dummy = souplist

# phase 1

phase_1 = []

for i in tqdm(souplist_dummy):
    phase_1.append(i.find_all('div', {'class':'article', 'id': 'titleRecs'}))

# -----------------------------------------------------------------------------------

# phase 2

phase_2 = []

import re
r_one = re.compile(".*title")

for i in tqdm(phase_1):
    for j in i:
        phase_2.append(j.find_all('img'))

# -----------------------------------------------------------------------------------

# # phase 3

phase_3 = []

for i in tqdm(range(len(phase_2))):
    phase_3.append(list(map(lambda x: x, phase_2[i][0:12])))

# # phase 4

phase_4 = []

for i in tqdm(phase_3):
    for j in i:
        phase_4.append(j.find_all('title'))

1 个答案:

答案 0 :(得分:0)

您可以尝试以下命令,该命令需要bs4 4.7.1+并使用:has来指定您想要a带有img子级的标签,然后与相邻的同级组合器获取下一个{{1 }}并添加attribute = value选择器,以确保img包含特定的子字符串和href属性。如果您知道总会有一个title属性,则可以从选择器中删除它。

title