Извлеките часть хранилища URL — адресов в списке внутри фрейма данных- Python

#python #pandas #dataframe #url #extract

Вопрос:

Я пытаюсь извлечь только числовую часть, в примере ниже 25709, и добавить в нее переменную, давайте назовем ее athleteID, которую я позже смогу добавить в динамический URL-адрес для итерации и использования для отправки поискового запроса:

 'lt;a href="../athletehistory/?athleteNumber=25709" target="_top"gt;Zola Buddlt;/agt;'  

У меня есть список этих URL-адресов (или URL-адресов частей), хранящихся в списке внутри фрейма данных, и я дважды повторил этот фрейм данных, используя функцию split (‘=’), и мне удалось довести его до точки ниже.

 i=[]  id_list=[]  for id in df2['athleteURL']:  i = id.split('=')  id_list.append(i)  print(id_list)  

Который затем создает список, одну строку в качестве примера ниже:

 'lt;a href', '"../athletehistory/?athleteNumber', '25709" target', '"_top"gt;Zola Buddlt;/agt;'  

Затем я сделал вторую итерацию, используя ‘ ( ‘»‘ )’, и получил ее ниже:

 id_list2=[]    for id2 in id_list[2]:  j = id2.split('"')  id_list2.append(j)   #print(id_list2[2])   athleteIDnumber = id_list2[2]  print(athleteIDnumber)   ['2967288', ' target']  

Однако именно здесь я сейчас застрял, так как это, по-видимому, один элемент в списке, плюс я не уверен, что это самый эффективный способ извлечь эту строку, так как я также боролся с использованием других функций регулярных выражений.

Мы будем признательны за любые советы или поддержку. Спасибо, Крис

Ответ №1:

 from urllib.parse import urlparse, parse_qs from bs4 import BeautifulSoup  spam = 'lt;a href="../athletehistory/?athleteNumber=25709" target="_top"gt;Zola Buddlt;/agt;'  def get_athlete_number(html):  soup = BeautifulSoup(html, 'html.parser')  href = soup.find('a').get('href')  return parse_qs(urlparse(href).query).get('athleteNumber', [None])[0]  print(get_athlete_number(spam))  

выход

 25709  

Используйте bs4 для анализа html-кода и получения URL-адреса. Используйте urllib.parse из стандартной библиотеки для анализа URL-адреса. Определите функцию и примените ее к столбцу со значениями html. Обратите внимание, что функция возвращает str

Комментарии:

1. Спасибо тебе оооочень большое, спас меня, вырвав последние клочки моих волос! 🙂