Задать вопрос
@roki88

Не могу запустить скрипт на python 3.7?

Всех с наступающим , у меня Windows 7 , Python 3.7 , Pycharm Community . При попытке запустить данный скрипт выдает ошибку

"C:\Program Files (x86)\Python37-32\python.exe" "C:/my/parsing _ssylok.py"
Traceback (most recent call last):
File "C:/my/parsing _ssylok.py", line 2, in
from bs4 import BeautifulSoup4
ImportError: cannot import name 'BeautifulSoup4' from 'bs4' (C:\Program Files (x86)\Python37-32\lib\site-packages\bs4\__init__.py)

Process finished with exit code 1


from urllib.parse import urlparse
from bs4 import BeautifulSoup4#"C:\Program Files (x86)\Python37-32\python.exe" "C:/my/parsing _ssylok.py"
#Traceback (most recent call last):
 # File "C:/my/parsing _ssylok.py", line 2, in <module>
  #  from bs4 import BeautifulSoup4
#ImportError: cannot import name 'BeautifulSoup4' from 'bs4' (C:\Program Files (x86)\Python37-32\lib\site-packages\bs4\__init__.py)

#Process finished with exit code 1
# код в коментарии выше выдает Pycharm



import requests
import lxml
  
DOMAIN = '101-rosa.ru'
HOST = 'http://' + DOMAIN
FORBIDDEN_PREFIXES = ['#', 'tel:', 'mailto:']
links = set()  # множество всех ссылок
  
  
def add_all_links_recursive(url, maxdepth=1):
    # print('{:>5}'.format(len(links)), url[len(HOST):])
    # извлекает все ссылки из указанного `url`
    # и рекурсивно обрабатывает их
    # глубина рекурсии не более `maxdepth`
  
    # список ссылок, от которых в конце мы рекурсивно запустимся
    links_to_handle_recursive = []
  
    # получаем html код страницы
    request = requests.get(url)
    # парсим его с помощью BeautifulSoup
    soup = BeautifulSoup(request.content, 'lxml')
    # рассматриваем все теги <a>
    for tag_a in soup.find_all('a'):
        # получаем ссылку, соответствующую тегу
        link = tag_a['href']
        # если ссылка не начинается с одного из запрещённых префиксов
        if all(not link.startswith(prefix) for prefix in FORBIDDEN_PREFIXES):
            # проверяем, является ли ссылка относительной
            # например, `/oplata` --- это относительная ссылка
            # `http://101-rosa.ru/oplata` --- это абсолютная ссылка
            if link.startswith('/') and not link.startswith('//'):
                # преобразуем относительную ссылку в абсолютную
                link = HOST + link
            # проверяем, что ссылка ведёт на нужный домен
            # и что мы ещё не обрабатывали такую ссылку
            if urlparse(link).netloc == DOMAIN and link not in links:
                links.add(link)
                links_to_handle_recursive.append(link)
  
    if maxdepth > 0:
        for link in links_to_handle_recursive:
            add_all_links_recursive(link, maxdepth=maxdepth - 1)
  
def main():
    add_all_links_recursive(HOST + '/')
    for link in links:
        print(link)
  
if __name__ == '__main__':
    main()

BS4 установил все корректно подключилось не пойму что не работает. Прошу прощения за транслит в названии файлов).
  • Вопрос задан
  • 269 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
gordon_shamway
@gordon_shamway
from bs4 import BeautifulSoup
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы