Очистка спецификаций c часть HTML идентификатора сайта с использованием Beautifulsoup - PullRequest
1 голос
/ 08 апреля 2020

Я пытаюсь очистить идентификатор ниже html (1217428), не удаляя оставшуюся часть тега id, но я понятия не имею, как выделить только нужную часть.

<td class="pb-15 text-center">
<a href="#" id="1217428_1_10/6/2020 12:00:00 AM" class="slotBooking">
    8:15 AM ✔ 
</a>
</td>

До сих пор я придумал это:

lesson_id = [] # I wish to fit the lesson id in this list
soup = bs(html, "html.parser")
slots = soup.find(attrs={"class" : "pb-15 text-center"})
tag = slots.find("a")
ID = tag.attrs["id"]
print (ID)

Но это только позволяет мне получить это как вывод:

1217428_1_10/6/2020 12:00:00 AM

Есть ли способ, которым я мог бы редактировать свой код такой что вывод будет:

1217428

Я также пытался использовать регулярное выражение с этим:

lesson_id = []
soup = bs(html, "html.parser")
slots = soup.find(attrs={"class" : "pb-15 text-center"})
tag = slots.find("a")
ID = tag.attrs["id"]
lesson_id.append(ID(re.findall("\d{7}")))

Но я получаю эту ошибку:

TypeError: findall() missing 1 required positional argument: 'string'

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Я думаю, что вы можете решить эту проблему, разделив идентификатор с помощью "_" и используя первую часть. (это то, что я понимаю из приведенного выше примера):

lesson_id = [] # I wish to fit the lesson id in this list
soup = bs(html, "html.parser")
slots = soup.find(attrs={"class" : "pb-15 text-center"})
tag = slots.find("a")
ID = tag.attrs["id"]
if ID:
    ID = ID.split("_")[0]
print (ID)
1 голос
/ 08 апреля 2020

Вы можете просто разделить жало следующим образом:

id_list = ID.split('_',1)
#will give you ['1217428', '1_10/6/2020 12:00:00 AM']
id = id_list[0] # which is '1217428'

Вы также можете использовать регулярное выражение:

match = re.search(r'\d{1,}',ID)
id = match.group() # '1217428'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...