Парсим ссылки на Python и BeautifulSoup

Если нужно достать все ссылки на определенной странице с помощью Python, это сделать совсем легко.Разберем такой пример. У нас есть HTML страница:

<html>
 <head>
  <title>Example</title>
 </head>
 <body>
  <div class='General'>
   <div class='First-class'>
    <p><a href='links what I need'>Link - links what I need</a></p>
    <p><a href='links what I'>Link - links what I</a></p> 
    <p><a href='links what'>Link - links what</a></p>
    <p><a href='links'>Link - links</a></p>
   </div>
  </div>
 </body>
</html>

Первый вариант скрипта такой:

import urllib.request
from bs4 import BeautifulSoup
html = urllib.request.urlopen('http://your/url')
soup = BeautifulSoup(html, 'html.parser').find('div', class_='First-class')
for i in soup.find_all('a', href=True):
    print(i['href'])

На выходе мы получим:
links what I need
links what I
links what
links

Второй вариант такой (используем модуль re — регулярные выражения):

import re
pattern = re.compile(r'href="(.*)">')
html = urllib.request.urlopen('http://your/url')
soup = BeautifulSoup(html, 'html.parser').find('div', class_='First-class')
print(re.findall(pattern, str(soup)))

И результат будет такой:
[‘links what I need’, ‘links what I’, ‘links what’, ‘links’] 


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.


Unlix © Все права защищены 2020

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!