#python #web-scraping
#python #веб-извлечение
Вопрос:
я довольно новичок в очистке с помощью BeatifulSoup и python, и у меня возникают некоторые трудности при попытке получить href внутри span, но у него нет класса.. Следующая часть кода взята с форума phpbb, у меня нет проблем с очисткой всех href, но по какой-то причине я не могу понять, как захватить то, что находится внутри диапазона..
<div class="col-md-48 post-text" data-topic="6693rw38" data-forum="2">
<br>
<br>
<a href="http://imgshare.net/img-5ba3dt3ad8a24.html" target="_blank" class="postlink" rel="nofollow"></a>
<br>
<br>
<a href="http://imgshare.net/img-5baefr1a51a49.html" target="_blank" class="postlink" rel="nofollow"></a>
<br>
<br>
<span>
<a href="https://k2s.cc/file/5c745ce5g9193/toyota.mp4" target="_blank">https://k2s.cc/file/5c745ce5g9193/toyota.mp4</a>
</span>
<br>
<br>
<a href="http://imgshare.net/img-5ba34d1q805b8.html" target="_blank" class="postlink" rel="nofollow"></a>
<br>
<br>
<span>
<a href="https://k2s.cc/file/b28gr283ef76e/ford.mp4" target="_blank">https://k2s.cc/file/b28gr283ef76e/ford.mp4</a>
</span>
Это даст мне все ‘href’ внутри тега a:
url ='somephpbbforum.com'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'lxml')
link = soup.find_all('div', class_ = 'col-md-48')
for div in link:
all_links = [link1['href'] for link1 in div.find_all('a')]
print(all_links)
Спасибо, ребята!
Ответ №1:
Вы, вероятно, ищете что-то подобное (используя css-селекторы):
all_links = [s['href'] for s in soup.select('div.col-md-48 > a[href]')]
all_links
вывод:
['http://imgshare.net/img-5ba3dt3ad8a24.html',
'http://imgshare.net/img-5baefr1a51a49.html',
'http://imgshare.net/img-5ba34d1q805b8.html']
Редактировать:
Чтобы получить текстовое содержимое этих узлов, используйте
all_links2 = [s.text for s in soup.select('div.col-md-48 > span > a[href]')]
all_links2
Вывод:
['https://k2s.cc/file/5c745ce5g9193/toyota.mp4',
'https://k2s.cc/file/b28gr283ef76e/ford.mp4']
Комментарии:
1. Спасибо за быстрый ответ.. ваш код имеет абсолютный смысл, но по какой-то причине он возвращает пустые списки.. также то, что я пытаюсь наскрести, — это то, что находится внутри span -> a -> href ..
2. @AtApi Вывод в ответе — это то, что находится внутри
<a href="xxxx"]>
узла в примере html в вашем вопросе. Что касается того, почему вы получаете пустые списки — возможно, вам потребуется добавить фактический URL-адрес к вашему вопросу, чтобы ответить на этот вопрос.3. я понимаю, но то, что я пытаюсь очистить, — это href внутри диапазона в строке 10 и строке 18 <a href=» k2s.cc/file/5c745ce5g9193/toyota.mp4 » например, и <a href=» k2s.cc/file/b28gr283ef76e/ford.mp4 » спасибо вам за вашу помощь
4. @AtApi я вижу; вы ищете текстовые узлы, а не значения
link
атрибутов. См. Редактирование.5. Спасибо, приятель! я все еще получаю пустой список, но я думаю, что вы указали мне правильный путь, я лучше проверю html, чтобы понять, почему я получаю пустой список, но я действительно ценю вашу помощь!!!!,