То же имя в другом классе, получить URL, BeautifulSoup Python - PullRequest
0 голосов
/ 18 июня 2020

У меня есть HTML, и мне нужно получить на нем URL-адреса:

<div class="posts-container col-md-6"
   <ul class="emb-embassies-list"
     <a class="entry-title" href="commonlink.com"
   <ul class="emb-embassies-list"
     <a class="entry-title" href="rarelink.com"

<div class="col-md-6"
   <ul class="emb-embassies-list"
     <a class="entry-title" href="anothercommonlink.com"
   <ul class="emb-embassies-list"
     <a class="entry-title" href="legendarylink.com"

Когда я подаю заявку:

for i in soup.findAll('div', "posts-container col-md-6"):
    for anchor in soup.findAll('a', class_="entry-title", href=True):
        print(anchor['href'])

Я получаю:

>commonlink.com
>rarelink.com
>anothercommonlink.com
>legendarylink.com

Я хочу получить только "сообщения-контейнер col-md-6":

>commonlink.com
>rarelink.com

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Вы можете попробовать:

from bs4 import BeautifulSoup

html_doc = '''
<div class="posts-container col-md-6">
   <ul class="emb-embassies-list">
     <a class="entry-title" href="commonlink.com">some link1</a>
   <ul class="emb-embassies-list">
     <a class="entry-title" href="rarelink.com">some link2</a>
</div>
<div class="col-md-6">
   <ul class="emb-embassies-list">
     <a class="entry-title" href="anothercommonlink.com">some link3</a>
   <ul class="emb-embassies-list">
     <a class="entry-title" href="legendarylink.com">some link4</a>
</div>'''

soup = BeautifulSoup(html_doc, 'lxml')
ancors = soup.find('div', class_="posts-container col-md-6").find_all('a')

for a in ancors:
    print(a['href'])

Результат будет:

commonlink.com
rarelink.com
0 голосов
/ 18 июня 2020

Чтобы получить все ссылки под <div> с class="posts-container col-md-6", используйте CSS селектор .posts-container.col-md-6 a:

from bs4 import BeautifulSoup


txt = '''
<div class="posts-container col-md-6">
   <ul class="emb-embassies-list">
     <a class="entry-title" href="commonlink.com">some link1</a>
   <ul class="emb-embassies-list">
     <a class="entry-title" href="rarelink.com">some link2</a>
</div>
<div class="col-md-6">
   <ul class="emb-embassies-list">
     <a class="entry-title" href="anothercommonlink.com">some link3</a>
   <ul class="emb-embassies-list">
     <a class="entry-title" href="legendarylink.com">some link4</a>
</div>'''



soup = BeautifulSoup(txt, 'html.parser')

for a in soup.select('.posts-container.col-md-6 a'):
    print(a['href'])

Выводит:

commonlink.com
rarelink.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...