Как получить все hrefs (внутри <тега) и назначить их переменной ?? - PullRequest
0 голосов
/ 05 января 2019

Мне нужно, чтобы все hrefs присутствовали в теге 'a' и назначали его переменной Я сделал это, но получил только первую ссылку

soup_level1 = BeautifulSoup(driver.page_source, 'lxml')
userName = soup_level1.find(class_='_32mo')
link1 = (userName.get('href'))

И вывод, который я получаю

print(link1)
https://www.facebook.com/xxxxxx?ref=br_rs

Но мне нужно, по крайней мере, топ 3 или топ 5 ссылок Структура веб-страницы

 `<div>
  <a class="_32mo" href="https://www.facebook.com/xxxxx?ref=br_rs">`
  </div>
   <div>
  <a class="_32mo" href="https://www.facebook.com/yyyyy?ref=br_rs">`
  </div>
  <div>
  <a class="_32mo" href="https://www.facebook.com/zzzzz?ref=br_rs">`
  </div>

Мне нужны эти ссылки

1 Ответ

0 голосов
/ 05 января 2019
from bs4 import BeautifulSoup
html="""
<div>
  <a class="_32mo" href="https://www.facebook.com/xxxxx?ref=br_rs">`
  </div>
   <div>
  <a class="_32mo" href="https://www.facebook.com/yyyyy?ref=br_rs">`
  </div>
  <div>
  <a class="_32mo" href="https://www.facebook.com/zzzzz?ref=br_rs">`
  </div>
  """
soup=BeautifulSoup(html,'lxml')
my_links = soup.findAll("a", {"class": "_32mo"})
for link in my_links:
    print(link.get('href'))

выход

https://www.facebook.com/xxxxx?ref=br_rs
https://www.facebook.com/yyyyy?ref=br_rs
https://www.facebook.com/zzzzz?ref=br_rs

Чтобы получить топ n ссылок, вы можете использовать

max_num_of_links=2
for link in my_links[:max_num_of_links]:
    print(link.get('href'))

выход

https://www.facebook.com/xxxxx?ref=br_rs
https://www.facebook.com/yyyyy?ref=br_rs

Вы также можете сохранить верхние n ссылок в список

link_list=[]
max_num_of_links=2
for link in my_links[:max_num_of_links]:
    link_list.append(link.get('href'))
print(link_list)

выход

['https://www.facebook.com/xxxxx?ref=br_rs', 'https://www.facebook.com/yyyyy?ref=br_rs']

EDIT:

Если вам нужен драйвер для получения ссылок по одной

max_num_of_links=3
for link in my_links[:max_num_of_links]:
        driver.get(link.get('href'))
        # rest of your code ...

По какой-то причине, если вы хотите использовать разные переменные, такие как link1, link2 и т. Д.

from bs4 import BeautifulSoup
html="""
<div>
  <a class="_32mo" href="https://www.facebook.com/xxxxx?ref=br_rs">`
  </div>
   <div>
  <a class="_32mo" href="https://www.facebook.com/yyyyy?ref=br_rs">`
  </div>
  <div>
  <a class="_32mo" href="https://www.facebook.com/zzzzz?ref=br_rs">`
  </div>
  """
soup=BeautifulSoup(html,'lxml')
my_links = soup.findAll("a", {"class": "_32mo"})
link1=my_links[0].get('href')
link2=my_links[1].get('href')
link3=my_links[2].get('href')
# and so on, but be careful here you don't want to try to access a link which is not there or you'll get index error
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...