Извлечение якорных тегов из разных тегов li одного и того же класса с помощью Beautifulsoup - PullRequest
0 голосов
/ 04 апреля 2020

так что шаблон html выглядит следующим образом

<ul class="directory_social_media">
     <li><a href="http://twitter.com/naibg">Twitter</a></li>
</ul>

  <ul class="directory_social_media">
      <li><a href="https://twitter.com/hff">Twitter</a></li>
      <li><a href="https://www.facebook.com/hfflp">Facebook</a></li>
</ul>
  <ul class="directory_social_media">
      <li><a href="https://twitter.com/binswangerworld">Twitter</a></li>
      <li><a href="https://www.facebook.com/pg/binswangermgmtcorp/posts/">Facebook</a></li>
      <li><a href="https://www.linkedin.com/in/david-r-barber-14007622/">LinkedIn</a></li>
</ul>

Мое решение

content = driver.page_source
soup = BeautifulSoup(content, 'html.parser')
for EachPart in soup.find_all("div", {"class": "listing"}):
    name = EachPart.find('div', attrs={'class': 'profile_content'})
    # print(name.find('a').text)
    Company = EachPart.find('ul', attrs={'class': 'directory_social_media'})
    print(Company.a.get('href'))

это предоставление парных ссылок в выводе, но выдача следующей ошибки после этих ссылок.

http://twitter.com/naibg
http://twitter.com/naibg
https://twitter.com/hff
Traceback (most recent call last):
  File "/Users/sameer/Documents/Python/webScrapy.py", line 23, in <module>
    print(Company.a.get('href'))
AttributeError: 'NoneType' object has no attribute 'a'

1 Ответ

1 голос
/ 04 апреля 2020

На основе строго html образца в вашем вопросе и с использованием только css селекторов:

co = """your html above"
soup = bs(co,'lxml')
Company = soup.select('ul.directory_social_media>li>a')
for comp in Company:
    print(comp.attrs['href'])

Вывод:

http://twitter.com/naibg
https://twitter.com/hff
https://www.facebook.com/hfflp
https://twitter.com/binswangerworld
https://www.facebook.com/pg/binswangermgmtcorp/posts/
https://www.linkedin.com/in/david-r-barber-14007622/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...