python HTML пользовательский тег в соскобе - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь удалить информацию только из тега data-ldpemail, а не из всего тега.

любые идеи о том, как я могу сделать это, используя python и красивый суп ... Я продолжаю получать Целый тег, а не только «data-ldpemail». Ниже приведен образец тега:

<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)

1 Ответ

1 голос
/ 26 февраля 2020

Поскольку вы не предоставили никакого кода для демонстрации того, как вы попали туда, где вы находитесь, я предполагаю, что вы знаете, как изолировать нужные теги "a".

Важно отметить, что в Пример «data-ldpemail» - это не тег, а атрибут тега для тега «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]

То, что делает один вкладыш выше, - это найти все теги привязки в весь объект супа, проходит через этот набор, добавляя значение атрибута тега «data-ldpemail» в email_list, если этот тег привязки имеет атрибут «data-ldpemail».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...