Извлечение и хранение ссылок из вложенных объектов Beautiful Soup - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь очистить и сохранить ссылки с веб-страницы. Ссылки организованы как виджеты в разделе blogroll блога. Я выяснил, как создать список некоторых объектов Beautifulsoup, но не могу извлечь ссылки из этого подмножества объектов.

Я провел много часов, пробуя различные типы поиска, поиска и повторного создания этих объектов.

req = Request(url , headers={'User-Agent': 'Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11'})
document = urlopen(req, context=ctx)
html = document.read()
soup = BeautifulSoup(html,"html.parser")



tags = soup.find_all(attrs={"class":"xoxo blogroll"})
print(type(tags))
#this is a <class 'bs4.element.ResultSet'>


count = 0
for tag in tags:
    print(type(tag))
    # this is a <class 'bs4.element.Tag'>
    print('this is tag: ', tag)#tester print

 ''' 
    this returns things like:
this is tag:  <ul class="xoxo blogroll">
<li><a href="http://blog.jaibot.com/">ANOIEAEIB</a></li>
<li><a href="http://commonsenseatheism.com/">Common Sense Atheism</a></li>
<li><a href="http://lesswrong.com">Less Wrong</a></li>
<li><a href="http://thelastpsychiatrist.com/">The Last Psychiatrist</a></li>
</ul>
<class 'bs4.element.Tag'>
this is tag:  <ul class="xoxo blogroll">
<li><a href="http://alicorn.elcenia.com/board/index.php">Alicornutopia</a></li>
<li><a href="http://unsongbook.com">Unsong</a></li>
<li><a href="https://parahumans.wordpress.com/">Worm</a></li>
</ul>

    '''

Я хочу извлечь и распечатать все URL-адреса из каждого тега, а затем сохранить их в моей базе данных sqlite3.

1 Ответ

1 голос
/ 15 апреля 2019

Вы можете попробовать добавить к нему селектор атрибутов, чтобы получить в этом классе дочерние элементы родителей.

links = [item['href'] for item in soup.select('.blogroll [href]')]

Вероятно, вы можете использовать немного быстрее

links = [item['href'] for item in soup.select('.blogroll a')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...