Уведомления

Группа в Telegram: @pythonsu

#1 Май 10, 2017 14:48:24

Murad
Зарегистрирован: 2017-05-07
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

парсинг сайта

Нужно вывести все ссылки сайта, но только те ссылки которые не имеют .jpg, #, и .img
как это фильтр организовать? я знаю что - то надо сделать с href, чтобы оно было только желаемые ссылки, но вот как не знаю, помогите пожалуйста

 def get_links(base_url):
    links = []
    source_cod = requests.get(base_url)
    text = source_cod.text
    soup = BeautifulSoup(text)
    for link in soup.findAll('a'):
        href = link.get('href')
        if href is not None:
            url = parse.urljoin(base_url, href)
            if url not in links:
                links.append(url)
    return links

Офлайн

#2 Май 10, 2017 23:41:32

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9715
Репутация: +  842  -
Профиль   Отправить e-mail  

парсинг сайта

Murad
как это фильтр организовать?
Не нужно делать всё сразу в одной функции. Сделай две функции: одна принимает адрес и выбирает оттуда все ссылки; другая принимает ссылки и отфильтровывает из них нужные. Третья функция управляет этими двумя функциями.

  
>>> def get_filtered_links_from_url(url):
...     links = get_links(url)
...     out = filter_links(links)
...     return out
... 
>>> def get_links(url):
...     # достаю ссылки из url
...     out = ['link1', 'link2']
...     return out
... 
>>> def filter_links(links_list):
...     # фильтрую ссылки из links_list
...     out = ['link1', 'link2']
...     return out
... 
>>> get_filtered_links_from_url('https://site.com')
['link1', 'link2']
>>>



Отредактировано py.user.next (Май 10, 2017 23:42:02)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version