#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. Спасибо тебе оооочень большое, спас меня, вырвав последние клочки моих волос! 🙂