Извлечение ‘href’ из a без класса внутри

#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, чтобы понять, почему я получаю пустой список, но я действительно ценю вашу помощь!!!!,