Всех с наступающим , у меня 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 установил все корректно подключилось не пойму что не работает. Прошу прощения за транслит в названии файлов).