抓取中的python HTML自定义标记

2024-09-30 20:37:26 发布

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

我只想从数据标签中删除信息,而不是从整个a标签中删除信息

有没有关于如何使用python和beautiful soup实现这一点的想法。。我一直得到整个a标签,而不仅仅是“数据和电子邮件”。 下面是示例标记:

<a class="lf_font-weight--light agent-email mailto" data-ldpphone="111-111-111" data-ldpemail="person@company.com" data-personid="10480733">Me</a>

import requests 
from bs4 import BeautifulSoup 

soup = BeautifulSoup(open('test.html'), 'html.parser') 
people = soup.find('div', id='search-results') 
items = people.find_all('figure') 
#print(items) 
print(items[0].find('h1').get_text())
print(items[0].find('h3').get_text()) 
email = soup.find('a', attrs={"data-ldpemail" : "x"}) 
email = email.attrs['data-ldpemail'] 
print(email)

Tags: 数据import信息datagetemailhtmlitems
1条回答
网友
1楼 · 发布于 2024-09-30 20:37:26

由于您没有提供任何代码来演示您是如何到达目的地的,我假设您知道如何隔离所需的“a”标记

需要注意的是,在示例中,“data ldpmail”不是标记,而是“a”(锚定)标记的标记属性。假设您隔离了一个具有该属性的标记,然后提取该属性的值:

a_tag.attrs['data-ldpemail']

bs4.element.Tag.attrs将返回一个字典,其中包含标记的所有属性作为键,每个标记的值作为字典值。然后我们只访问属性字典的键

一句话可以从一些汤中获取全部:

email_list = [tag.attrs.get('data-ldpemail') for tag in soup.find_all('a') if tag.attrs.get('data-ldpemail') is not None]

上面的一行代码所做的是查找整个soup对象中的所有锚定标记,迭代该集合,如果锚定标记具有“data ldpemail”属性,则将“data ldpemail”标记属性的值添加到email_list

相关问题 更多 >